mvstanton@chromium.org
1691f43b8b
To fully support hydrogen code stubs which accept a variable number of arguments,
...
the HReturn/LReturn instruction needs to be able to determine argument count
from a stack evaluation rather than as a constant from scope.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/12613004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-08 21:07:55 +00:00
mstarzinger@chromium.org
0cfe1dce9e
Unify deoptimizer for stub failure trampoline frames.
...
This unifies the translation of a compiled stub frame to a stub failure
trampoline frame. Only the frame's register allocation is different on
each architecture and can be factored out.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/12379045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-08 16:18:50 +00:00
danno@chromium.org
bbc599f334
Unify grow mode and stub kind
...
In the process, ensure that transition-causing element stores handle all cases of the transitioned receiver map.
Review URL: https://codereview.chromium.org/12390031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13850 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-06 21:51:07 +00:00
mvstanton@chromium.org
a2bd4706c2
Make sure that on x86 we don't generate SSE2 code in the snapshot.
...
BUG=
Review URL: https://codereview.chromium.org/12391033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13844 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-06 16:15:01 +00:00
mstarzinger@chromium.org
2b7891c303
Unify deoptimizer for construct stub frames.
...
This unifies the translation of artificial construct stub frames. The
frame layout is almost the same on all architectures and only differs
in the presence of a slot holding the constructor function.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/12379042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-06 16:12:24 +00:00
verwaest@chromium.org
34697f5b12
Make IC patching resilient to flushing of the original target() ic.
...
Review URL: https://chromiumcodereview.appspot.com/12451003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-05 17:38:35 +00:00
adamk@chromium.org
7fe9bd5a09
Properly handle misses for StoreArrayLengthStub on ia32 and x64
...
Both failed to generate a miss if the key wasn't "length".
ARM and MIPS were already correct.
BUG=v8:2566
Review URL: https://codereview.chromium.org/12378085
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-05 16:31:11 +00:00
svenpanne@chromium.org
e4edbb0535
Cleaned up CpuFeature scope handling.
...
First of all, it has nothing to do with Isolates, it is related to the assembler
at hand. Furthermore, the saving/restoring is platform-independent. Cleaned up
some platform-specific stuff on the way.
Note that there are some things which still need some cleanup, like e.g. using
EnumSet instead of uint64_t, making Probe() more uniform across platforms etc.,
but the CL is already big enough.
BUG=v8:2487
Review URL: https://codereview.chromium.org/12391055
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-05 10:48:16 +00:00
mstarzinger@chromium.org
0ca02ee48d
Make sure builtin functions don't rely on __proto__.
...
This makes sure that none of the builtin functions rely on the __proto__
accessor which can now be monkey-patched by applications. Instead use a
separate %SetPrototype() intrinsic or object literals to do the job.
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/12385082
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-04 16:05:12 +00:00
rossberg@chromium.org
c5de322c51
Fix one more cast warning on Win32
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/12398009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13813 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-04 15:25:33 +00:00
rossberg@chromium.org
2ac5884b57
Fix cast warnings on Win32
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/12374087
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-04 15:15:37 +00:00
rossberg@chromium.org
5c93b18eb2
ES6 symbols: Allow symbols as property names
...
Since symbols and strings share a common representation, most of this change is about consistently replacing 'String' with 'Name' in all places where property names are expected. In particular, no new logic at all is necessary for maps, property dictionaries, or transitions. :) The only places where an actual case distinction is needed have to do with generated type checks, and with conversions of names to strings (especially in logger and profiler).
Left in some TODOs wrt to the API: interceptors and native getters don't accept symbols as property names yet, because that would require extending the external v8.h.
(Baseline CL: https://codereview.chromium.org/12296026/ )
R=verwaest@chromium.org ,mstarzinger@chromium.org
BUG=v8:2158
Review URL: https://codereview.chromium.org/12330012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13811 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-04 15:00:57 +00:00
verwaest@chromium.org
590a3f8811
Polymorphism support for load IC.
...
Review URL: https://chromiumcodereview.appspot.com/12340112
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13801 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-04 14:03:27 +00:00
yangguo@chromium.org
e8145cabe6
Tweak register allocation for Math.round and do not use roundsd.
...
R=svenpanne@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/12374046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-04 08:44:42 +00:00
mvstanton@chromium.org
46af26a5db
A debug code assert needed to be behind the new optimize_constructed_arrays flag.
...
BUG=
Review URL: https://codereview.chromium.org/12385050
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-01 16:59:53 +00:00
mvstanton@chromium.org
c4caf766bf
Allocation Info Tracking, continued.
...
Addresses missing cases for array literals.
Adds support for "new Array()" call sites. This isn't complete yet, I have to run with --noinline_new.
BUG=
Review URL: https://codereview.chromium.org/11818021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-01 16:06:34 +00:00
rossberg@chromium.org
d7539af89a
Fix cast warning on Win32
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/12385046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13787 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-01 14:31:01 +00:00
rossberg@chromium.org
090d09d685
ES6 symbols: Implement Symbol intrinsic and basic functionality
...
- Add --harmony-symbols flag.
- Add Symbol constructor; allow symbols as (unreplaced) return value from constructors.
- Introduce %CreateSymbol and %_IsSymbol natives and respective instructions.
- Extend 'typeof' code generation to handle symbols.
- Extend CompareIC with a UNIQUE_NAMES state that (uniformly) handles internalized strings and symbols.
- Property lookup delegates to SymbolDelegate object for symbols, which only carries the toString method.
- Extend Object.prototype.toString to recognise symbols.
Per the current draft spec, symbols are actually pseudo objects that are frozen with a null prototype and only one property (toString). For simplicity, we do not treat them as proper objects for now, although typeof will return "object". Only property access works as if they were (frozen) objects (via the internal delegate object).
(Baseline CL: https://codereview.chromium.org/12223071/ )
R=mstarzinger@chromium.org
BUG=v8:2158
Review URL: https://codereview.chromium.org/12296026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13786 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-01 13:28:55 +00:00
mstarzinger@chromium.org
05f1be1bb3
Unify deoptimizer for accessor and arguments frames.
...
This unifies the translation of artificial accessor stub and arguments
adaptor frames. The frame layout is the same on all architectures and
the computation code can be shared.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/12374044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13784 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-01 12:23:24 +00:00
rossberg@chromium.org
55f93b5532
Renamed "symbols" to "internalized strings" throughout the code base,
...
in preparation of the introduction of ES6 'symbols' (aka private/unique names).
The SymbolTable became the StringTable. I also made sure to adapt all comments. The only remaining use of the term "symbol" (other than unrelated uses in the parser and such) is now 'NewSymbol' in the API and the 'V8.KeyedLoadGenericSymbol' counter, changing which might break embedders.
The one functional change in this CL is that I removed the former 'empty_string' constant, since it is redundant given the 'empty_symbol' constant that we also had (and both were used inconsistently).
R=yangguo@chromium.org
BUG=
Review URL: https://codereview.chromium.org/12210083
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13781 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-28 17:03:34 +00:00
rossberg@chromium.org
8924d03e16
Minor cleanup of CompareIC state
...
Allow transitioning from KNOWN_OBJECT to KNONW_OBJECT or OBJECT.
Also, rename HEAP_NUMBER IC states to NUMBER, since they handle Smis, too.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/12254036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13775 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-28 14:43:57 +00:00
mstarzinger@chromium.org
b22c7eaed9
Revert "Reapply optimization of DeoptimizeIf for ia32." (r13767)
...
This optimization turns out to have a negative effect on i5 processors
throughout the board. This needs further investigation to figure out
the underlying reason but will be rolled out for now.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/12388016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-28 11:24:18 +00:00
yangguo@chromium.org
0e8a5fe4d8
Fix math.round with SSE4.1.
...
R=verwaest@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/12388015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-28 10:39:34 +00:00
verwaest@chromium.org
3ab255f55d
Currently this mostly just moves code around.
...
- Later the different parts will become individual code objects that tailcall into one another.
- The mapcheck/symbol check still needs to be separated from the overall prototype-chain check so that the ICs can reuse the handlers.
Review URL: https://chromiumcodereview.appspot.com/12209021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13768 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 15:28:53 +00:00
mstarzinger@chromium.org
574dc38f96
Reapply optimization of DeoptimizeIf for ia32 broken in r13633.
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/12340113
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13767 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 15:17:27 +00:00
svenpanne@chromium.org
bfaf38d2fd
Miscellaneous profile-driven Isolate plumbing.
...
While doing this, it became clear that quite a few functions should not be
static and should better live in various classes as instance methods, but I'll
leave this for a later CL.
BUG=v8:2487
Review URL: https://codereview.chromium.org/12314152
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13765 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:45:59 +00:00
yangguo@chromium.org
2a3063a7c3
Handle negative input in inlined Math.round on Intel CPUs.
...
R=jkummerow@chromium.org
BUG=v8:2451
Review URL: https://chromiumcodereview.appspot.com/12342037
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13764 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:44:57 +00:00
mstarzinger@chromium.org
ea5e9edac4
Fix materialization of arguments objects with unknown values.
...
This fixes the deoptimizer to materialize arguments objects of correct
length even in cases where the actual argument values are unknown and
were optimized away by Crankshaft. This can happen if only the length
property or the identity of an arguments object is used.
R=svenpanne@chromium.org
BUG=chromium:163530
TEST=mjsunit/regress/regress-crbug-163530
Review URL: https://codereview.chromium.org/12335132
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13763 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 14:37:51 +00:00
svenpanne@chromium.org
c26d100b10
Avoid TLS accesses in Object::Lookup and Object::GetPrototype.
...
Both methods were among the top causes for TLS accesses.
BUG=v8:2487
Review URL: https://codereview.chromium.org/12319144
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13759 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 13:22:29 +00:00
svenpanne@chromium.org
6e829ed485
Added Isolate parameter to CodeStub::GetCode().
...
According to gprof, this was the #1 cause for TLS access during an Octane run.
BUG=v8:2487
Review URL: https://codereview.chromium.org/12317141
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13756 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 12:33:24 +00:00
mstarzinger@chromium.org
aaada6e950
Fix SSE2 scope being too broad in DoCmpIDAndBranch.
...
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/12321141
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13740 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 18:12:27 +00:00
mstarzinger@chromium.org
7d681e014d
Compile FastCloneShallowObjectStub using Crankshaft.
...
This changes FastCloneShallowObjectStub to be compiled independent of
the target architecture. It also adds tracing to the deoptimizer for
compiled stubs and contains some minor bugfixes.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/12220074
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 13:08:08 +00:00
yangguo@chromium.org
72b802f27a
Refactor RegExpStub to check lazily.
...
R=ulan@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/12210143
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13727 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 09:53:07 +00:00
svenpanne@chromium.org
fb6776e84a
Made Isolate a mandatory parameter for everything Handle-related.
...
Unified parameter order of CreateHandle with the rest of v8 on the way. A few
Isolate::Current()s had to be introduced, which is not nice, and not every place
will win a beauty contest, but we can clean this up later easily in smaller steps.
Review URL: https://codereview.chromium.org/12300018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 14:46:09 +00:00
mmassi@chromium.org
8ef28eb5ee
Fixed numeric relations on HPhi instances.
...
Review URL: https://codereview.chromium.org/12301027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-21 10:22:31 +00:00
yangguo@chromium.org
215ba8cfc9
Combine %_SubString and %_StringCharAt.
...
R=ulan@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/12217071
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-20 14:29:40 +00:00
mstarzinger@chromium.org
b5a64451b1
Ensure deopt entries have no relocation information.
...
R=ulan@chromium.org
BUG=chromium:176943
Review URL: https://codereview.chromium.org/12314012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13698 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-20 13:12:26 +00:00
ulan@chromium.org
3a1eca4242
Remove prototype checks for leaf maps in optimized code.
...
Review URL: https://chromiumcodereview.appspot.com/12225099
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-20 11:49:54 +00:00
ulan@chromium.org
61bb1b78d3
Remove bogus check for TOP register in deoptimizer.
...
R=danno@chromium.org
BUG=176943
Review URL: https://chromiumcodereview.appspot.com/12300020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13690 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-19 12:37:19 +00:00
mstarzinger@chromium.org
fa94a23ea8
Cleanup code-stub interface descriptor initialization.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/12302017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-19 09:42:00 +00:00
ulan@chromium.org
817ce7285f
Register dependent codes before populating deoptimization data, which can cause GC.
...
R=mstarzinger@chromium.org
BUG=crash on nosnap-debug with stress-compaction
Review URL: https://chromiumcodereview.appspot.com/12256038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-14 13:48:20 +00:00
jkummerow@chromium.org
a7cc374b38
Properly support undefined->0 conversion in ia32 bitwise BinaryOpStubs (regression fix for r13624)
...
Review URL: https://codereview.chromium.org/12212162
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13659 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-13 14:37:09 +00:00
mmassi@chromium.org
a5c6716cf5
Infrastructure classes for evaluating numeric relations between values.
...
Review URL: https://codereview.chromium.org/12226112
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13656 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-13 14:16:15 +00:00
dcarney@chromium.org
0da6e525b7
Split AccessorInfo into DeclaredAccessorInfo and ExecutableAccessorInfo
...
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/12213012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13649 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-12 14:33:08 +00:00
mmassi@chromium.org
2fb5064487
Separated smi check from HBoundsCheck.
...
Review URL: https://codereview.chromium.org/12208013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-12 11:44:08 +00:00
svenpanne@chromium.org
d55650164c
Get rid of x87 in ia32 LCodeGen::DoBranch
...
Review URL: https://codereview.chromium.org/12208044
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13640 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-11 14:44:25 +00:00
mstarzinger@chromium.org
89474cdede
Fix bugs in DeoptimizeIf when lazy deopt is requested.
...
This also implements --trap-on-deopt on x64 and simplifies the
implementation of this flag on all architectures.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/12223053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13633 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-08 17:32:47 +00:00
jkummerow@chromium.org
cd42e5173d
Add missing type feedback collection to ia32 BinaryOpStubs for bitwise operations
...
Review URL: https://codereview.chromium.org/12223039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-07 15:51:05 +00:00
jkummerow@chromium.org
b1d7878c7f
Fix DoubleStackSlot-to-DoubleStackSlot moves on ia32. Unify platform-independent code.
...
BUG=173907
Review URL: https://codereview.chromium.org/12207063
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13617 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-07 13:15:41 +00:00
verwaest@chromium.org
f08b6ecac7
Split CompileCallConstant into logical parts for Frontend and Backend.
...
Initial step towards separating IC (map check(s)), handler frontend
(prototype-check) and handler backend (actual handler code).
- Still need to split the map-check (IC) from rest of the prototype
chain check.
- Still need to turn different parts in own code objects and cache them
in more optimal places.
Review URL: https://chromiumcodereview.appspot.com/12207016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13604 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-06 11:48:29 +00:00