yangguo@chromium.org
2e42f62981
Minor-key-ify CallICStub and CallIC_ArrayStub.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/491143003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 13:10:01 +00:00
yangguo@chromium.org
a6e503ad92
Change more PlatformCodeStubs to encode properties in the minor key.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/498283002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 10:39:20 +00:00
mvstanton@chromium.org
295448a4ea
Move register conventions out of the IC classes.
...
A change to a convention shouldn't require recompilation of ic.h/.cc.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/486213003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 09:50:09 +00:00
bmeurer@chromium.org
90c8932596
Replace our homegrown ARRAY_SIZE() with Chrome's arraysize().
...
Our own ARRAY_SIZE() was pretty bad at error checking. If you use
arrasize() in a wrong way, the compiler will issue an error instead of
silently doing the wrong thing. The previous ARRAY_SIZE() macro is still
available as ARRAYSIZE_UNSAFE() similar to Chrome.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/501323002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 09:19:24 +00:00
mvstanton@chromium.org
40d581f7f1
Eliminate code duplication in lithium calls to vector-based LoadICs
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/500073002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 14:12:12 +00:00
yangguo@chromium.org
899fe964ad
Encode CEntryStub properties in the minor key.
...
Eventually, all stubs should encode its properties in the minor key
so that stubs can be restored directly from the stub key.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/502713003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 13:09:02 +00:00
verwaest@chromium.org
2803733a3b
Move handler compilers to handler-compiler
...
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/497083002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 11:17:37 +00:00
jarin@chromium.org
d8295050d2
Fix deoptimization address patching in Turbofan to use safepoints.
...
Since the deopt patch address needs to be available during GC to
resolve safepoints, we need to move it to the code object (instead of
the deoptimization input data) - accessing a separate fixed array
is not safe during GC. This CL adds a deoptimization_pc field to
each safepoint. The fields points to the deoptimization block.
The CL also fixes wrong register allocator constraints for
frame states on calls. These should always live on the stack
because registers are not preserved during a call.
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/504493002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23334 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 07:02:19 +00:00
verwaest@chromium.org
30c3981c2c
Move IC code into a subdir and move ic-compilation related code from stub-cache into ic-compiler
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/483683005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-22 11:43:39 +00:00
verwaest@chromium.org
3baab5e688
Rewrite StoreIC handling using the LookupIterator. Continued from patch 494153002
...
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/478043006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-22 11:38:21 +00:00
rmcilroy@chromium.org
2934927450
Fix unused-variable error on release builds.
...
TBR=ulan@chromium.org
Review URL: https://codereview.chromium.org/466333006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-21 13:50:13 +00:00
rmcilroy@chromium.org
5dee3e0e2e
Add ARMv6 support for the out-of-line constant pool.
...
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/496443003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23278 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-21 13:26:47 +00:00
rmcilroy@chromium.org
37d886bc09
Add missing ConstantPoolUnavailableScopes on JS return.
...
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/494733002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23276 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-21 12:59:18 +00:00
verwaest@chromium.org
604031af8b
Use LookupIterator for CompileLoadInterceptor and delete Object::Lookup
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/466283003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23168 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 15:03:13 +00:00
bmeurer@chromium.org
e4db78e705
[arm] Recognize comparisons of shifts with zero.
...
For example, recognize
0 == r1 << r2
and generate a single
MOVS rt, r1, lsl r2
instruction.
TEST=cctest,compiler-unittests
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/478233002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 11:10:01 +00:00
yangguo@chromium.org
84edfa3d0c
Purge unused internalized string accessors.
...
R=marja@chromium.org
Review URL: https://codereview.chromium.org/471923002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 07:54:19 +00:00
rmcilroy@chromium.org
ee26e273cb
[turbofan]: Fix TurboFan for out-of-line constant pool on Arm.
...
Use LeaveFrame so that the constant pool pointer register is correctly restored
when using the out-of-line constant pool. Also clean up duplicate code in
builtins-arm.cc.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/469283002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23134 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-15 14:35:00 +00:00
mstarzinger@chromium.org
44247036a7
Fix newly discovered presubmit errors.
...
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/462033002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-12 13:33:35 +00:00
verwaest@chromium.org
aade11ede0
We should never allocate a 0-sized buffer, so never grow from 0.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/446933003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22947 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 17:48:31 +00:00
verwaest@chromium.org
a6384ade6b
Get rid of the "spare buffer" cache.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/446923002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 16:56:52 +00:00
yangguo@chromium.org
46bda34130
Abstract out fetching of break_address in debug mode
...
If the platform has a variable length call sequence
more than simple offset math is required. This can
be true with out of line constant pools on PowerPC.
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/427863003
Patch from Andrew Low <andrew_low@ca.ibm.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 13:56:58 +00:00
verwaest@chromium.org
0ef3978a13
Always use the StoreFieldStub to do the actual storing.
...
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/443963002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22931 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 13:18:36 +00:00
verwaest@chromium.org
b8ab822040
Hydrogenize (and share) StoreField except heapobject (for now).
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/443873002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 09:31:10 +00:00
verwaest@chromium.org
5aaf1487da
Load constants from the DescriptorArray
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/442763002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 08:02:21 +00:00
yangguo@chromium.org
0fb57e51d4
Check that external references are registered in the serializer.
...
Inspired by a patch by Slava Chigrin <vchigrin@yandex-team.ru>
R=jkummerow@chromium.org , vchigrin@yandex-team.ru
Review URL: https://codereview.chromium.org/441983002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22896 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 07:20:14 +00:00
jkummerow@chromium.org
e051112fc6
Restore performance of accesses to JSGlobalProxy after r22802
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/446523002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 10:44:17 +00:00
verwaest@chromium.org
5a2de1fced
Remove special frontend for callbacks with slow-mode holders.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/436273002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 10:27:10 +00:00
bmeurer@chromium.org
d07a2eb806
Rename ASSERT* to DCHECK*.
...
This way we don't clash with the ASSERT* macros
defined by GoogleTest, and we are one step closer
to being able to replace our homegrown base/ with
base/ from Chrome.
R=jochen@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/430503007
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 11:34:54 +00:00
verwaest@chromium.org
838c0ab285
Reuse the nonexistent handler frontend for transition handlers
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/437953003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22808 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 10:47:10 +00:00
verwaest@chromium.org
e508f1d404
Cleanup in stub-cache.cc; remove unused ArrayLength store ICs.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/430783002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 09:09:21 +00:00
mstarzinger@chromium.org
ab1cb70c8d
Ensure LModByPowerOf2I only gets environment when it deopts.
...
R=svenpanne@chromium.org
TEST=mozilla (with new --always-opt)
Review URL: https://codereview.chromium.org/423093009
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 08:47:15 +00:00
jkummerow@chromium.org
84525e2b2f
Avoid one repeated property lookup when computing load ICs.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/429053005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22802 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 08:34:56 +00:00
mstarzinger@chromium.org
e4894b366a
Unify InstanceofStub interface descriptors.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/437483003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-31 12:07:30 +00:00
yangguo@chromium.org
e0412e382b
Fix typos in LMathFround declarations.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/425243002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22738 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-31 08:40:09 +00:00
danno@chromium.org
a1383e2250
Land the Fan (disabled)
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/426233002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 13:54:45 +00:00
verwaest@chromium.org
2c2fce0c94
Remove keyed_store_calling convention and friends
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/424423002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 12:21:41 +00:00
verwaest@chromium.org
7378f07a20
Encapsulate the holder in the PropertyHolderCompilers
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/422023003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 12:01:48 +00:00
verwaest@chromium.org
d07de6ed59
Encapsulate type in the PropertyHandlerCompiler
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/426633002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 10:09:10 +00:00
verwaest@chromium.org
b337649d14
Only generate a single normal IC per kind per slow-mode map.
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/429543004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 17:02:52 +00:00
verwaest@chromium.org
3416d1133f
Clean up name distinction between Keyed ICs and Element Handlers
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/424743002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 16:07:34 +00:00
verwaest@chromium.org
0a099371a3
Remove all compilation related interface from the StubCache
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/422853003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 16:04:07 +00:00
mstarzinger@chromium.org
c0f6b34199
Support for dynamic write-barrier counters everywhere.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/421923003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22676 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 14:38:39 +00:00
mstarzinger@chromium.org
947740a6d8
Revert "Make --always-opt also optimize toplevel code."
...
TBR=ishell@chromium.org
Review URL: https://codereview.chromium.org/429583002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 13:08:51 +00:00
mvstanton@chromium.org
6980c4277c
CallIC customization stubs must accept that a vector slot is cleared.
...
The CallIC Array custom IC stub read from the type vector, expecting
to get an AllocationSite. But there are paths in the system where a
type vector can be re-created with default values, even though we
currently grant an exception to clearing of vector slots with
AllocationSites in them at gc time.
BUG=392114
LOG=N
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/418023002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22668 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:53:30 +00:00
mstarzinger@chromium.org
34f5edd500
Make --always-opt also optimize toplevel code.
...
R=jacob.bramley@arm.com , titzer@chromium.org , rossberg@chromium.org
Review URL: https://codereview.chromium.org/410153002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:41:42 +00:00
yangguo@chromium.org
a8a02a51f1
Inline Math.fround in optimized code.
...
R=svenpanne@chromium.org
BUG=v8:3469
LOG=N
Review URL: https://codereview.chromium.org/425943002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:34:08 +00:00
verwaest@chromium.org
3c873c4305
Restructure the IC / Handler compilers
...
BUG=
R=ishell@chromium.org , mvstanton@chromium.org
Review URL: https://codereview.chromium.org/411973002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-25 17:50:53 +00:00
yangguo@chromium.org
029b8a2379
For-of on null or undefined is an error
...
The latest ES6 draft changed the behavior of for-of on null / undefined,
which for once is a simplification.
R=rossberg@chromium.org
BUG=
Review URL: https://codereview.chromium.org/416033002
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22602 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-24 13:40:08 +00:00
verwaest@chromium.org
5767cd143d
Always use the LoadStubCompiler for Load handlers, also for keyedload handlers.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/414443002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 11:16:29 +00:00
verwaest@chromium.org
b8eb36a934
Only to the relevant checks in LoadFunctionPrototype
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/412483003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22550 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 11:12:11 +00:00