Michael Stanton
22302b5179
Hydrogen code stubs for vector-based ICs.
...
This patch finally allows running and passing tests with vector-based
Load and KeyedLoad ICs.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/767743002
Cr-Commit-Position: refs/heads/master@{#25800}
2014-12-12 13:56:35 +00:00
svenpanne
7c42ae3e47
Fixed an ordering issue found by UBSan_vptr.
...
We managed to access the scope_ member of CompilationInfo before its
containing object was actually constructed.
Rule of thumb: When constructing an object, never ever pass around
pointers to members which come later in the member initializer list,
you simply can't see locally if this might cause trouble or not.
Review URL: https://codereview.chromium.org/796363002
Cr-Commit-Position: refs/heads/master@{#25796}
2014-12-12 12:36:15 +00:00
yangguo
33853f73a7
Partially revert "Optimize function across closures."
...
BUG=chromium:434447
Review URL: https://codereview.chromium.org/755173002
Cr-Commit-Position: refs/heads/master@{#25500}
2014-11-25 13:22:04 +00:00
Michael Stanton
cfa1f94781
Revert "Re-land r25392 Use a stub in crankshaft for grow store arrays."
...
Due to performance issue.
TBR=danno@chromium.org
Review URL: https://codereview.chromium.org/735323002
Cr-Commit-Position: refs/heads/master@{#25421}
2014-11-19 14:08:43 +00:00
Michael Stanton
47f55baeaf
Re-land r25392 Use a stub in crankshaft for grow store arrays.
...
Code was vulnerable to different evaluation order in Clang.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/726693004
Cr-Commit-Position: refs/heads/master@{#25397}
2014-11-18 14:31:00 +00:00
Michael Stanton
77ee440af1
Revert "Use a stub in crankshaft for grow store arrays."
...
This reverts commit d40204f84c
.
TBR=danno@chromium.org
Review URL: https://codereview.chromium.org/735653003
Cr-Commit-Position: refs/heads/master@{#25393}
2014-11-18 13:08:07 +00:00
Michael Stanton
d40204f84c
Use a stub in crankshaft for grow store arrays.
...
We were deopting without learning anything.
BUG=v8:3417
LOG=N
R=danno@chromium.org
Review URL: https://codereview.chromium.org/368263003
Cr-Commit-Position: refs/heads/master@{#25392}
2014-11-18 12:32:24 +00:00
yangguo
6714365a30
Reland "Optimize function across closures." (again).
...
Review URL: https://codereview.chromium.org/707463002
Cr-Commit-Position: refs/heads/master@{#25367}
2014-11-17 08:43:00 +00:00
dslomov@chromium.org
eacdfa0b7a
Various clean-ups after top-level lexical declarations are done.
...
1. Global{Context,Scope}=>Script{Context,Scope}
2. Enable fixed tests
3. Update comments
R=rossberg@chromium.org
BUG=v8:2198
LOG=N
Review URL: https://codereview.chromium.org/716833002
Cr-Commit-Position: refs/heads/master@{#25291}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25291 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-12 11:35:18 +00:00
dslomov@chromium.org
480fbfeb2a
harmony-scoping: Implement StoreIC handler for stores to global contexts.
...
R=ishell@chromium.org , adamk@chromium.org , rossberg@chromium.org , verwaest@chromium.org
BUG=v8:2198
LOG=N
Review URL: https://codereview.chromium.org/712973002
Cr-Commit-Position: refs/heads/master@{#25264}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-11 15:16:20 +00:00
dslomov@chromium.org
e4d1839612
harmony-scoping: Implement LoadIC handler for loads from global contexts.
...
R=ishell@chromium.org , adamk@chromium.org , rossberg@chromium.org , verwaest@chromium.org
BUG=v8:2198
LOG=N
Review URL: https://codereview.chromium.org/696783005
Cr-Commit-Position: refs/heads/master@{#25259}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25259 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-11 11:16:43 +00:00
ishell@chromium.org
c5a492961f
Reland "In-object double fields unboxing (for 64-bit only)."
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/711313002
Cr-Commit-Position: refs/heads/master@{#25258}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-11 10:25:46 +00:00
verwaest@chromium.org
2d9079ca1d
Revert "In-object double fields unboxing (for 64-bit only)."
...
Revert "Fixes for Windows and Mac builds after r25250."
TBR=ishell@chromium.org
Review URL: https://codereview.chromium.org/699613004
Cr-Commit-Position: refs/heads/master@{#25252}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 17:44:51 +00:00
ishell@chromium.org
f133ac501b
In-object double fields unboxing (for 64-bit only).
...
This CL introduces LayoutDescriptor which is responsible for tracking which in-object fields are tagged and which are not.
LayoutDescriptor field added to Map. Currently unboxing is disabled.
R=hpayer@chromium.org , verwaest@chromium.org
Review URL: https://codereview.chromium.org/391693002
Cr-Commit-Position: refs/heads/master@{#25250}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25250 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 16:35:22 +00:00
bmeurer@chromium.org
9b72f14ced
Turn ToNumberStub into a PlatformCodeStub again.
...
The HydrogenCodeStub is too expensive and there's no easy way to reduce
this cost, so turning it into a PlatformCodeStub solves that problem
until we can use TurboFan for code stubs.
TEST=mjsunit
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/683913008
Cr-Commit-Position: refs/heads/master@{#25187}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 12:02:16 +00:00
yangguo@chromium.org
6de28b2be1
Revert "Reland "Optimize function across closures.""
...
This reverts commit r25142.
TBR=ishell@chromium.org
Review URL: https://codereview.chromium.org/702853002
Cr-Commit-Position: refs/heads/master@{#25145}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 11:37:42 +00:00
yangguo@chromium.org
1cdf4e9308
Reland "Optimize function across closures."
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/703603003
Cr-Commit-Position: refs/heads/master@{#25142}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25142 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 11:12:41 +00:00
bmeurer@chromium.org
3897182246
[turbofan] Add AllocateHeapNumberStub to avoid runtime call.
...
TEST=unittests
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/703473004
Cr-Commit-Position: refs/heads/master@{#25107}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 12:58:49 +00:00
yangguo@chromium.org
c66a3f95ae
Revert "Optimize function across closures."
...
This reverts r25102.
TBR=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/699143002
Cr-Commit-Position: refs/heads/master@{#25104}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 11:40:45 +00:00
yangguo@chromium.org
1d66934565
Optimize function across closures.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/699633002
Cr-Commit-Position: refs/heads/master@{#25102}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25102 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 11:06:44 +00:00
dcarney@chromium.org
b26632f655
Let FastCloneShallowObjectStub work with empty literal objects.
...
R=verwaest@chromium.org
LOG=N
BUG=417290
Review URL: https://codereview.chromium.org/655163002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24618 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 08:48:44 +00:00
yangguo@chromium.org
33dc53f9cc
Always include full reloc info to stubs for serialization.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/641643006
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 07:50:21 +00:00
ishell@chromium.org
2c30ec5f65
Fix for assertion failures appeared after StoreTransitionStub implementation.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/637553002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24438 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 14:32:19 +00:00
yangguo@chromium.org
2134c5c0ba
Fulfill some code serializer related TODOs.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/606083004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24377 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:04:28 +00:00
ishell@chromium.org
85d7140de0
Hydrogenize (and share) part of StoreTransition handler as a StoreTransitionStub and StoreField handler simplification.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/609463003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24333 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 14:54:14 +00:00
bmeurer@chromium.org
3eebdc3264
Replace OStream with std::ostream.
...
Review URL: https://codereview.chromium.org/618643002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 10:29:32 +00:00
ishell@chromium.org
171e62e589
ExtendStorageStub added, it is aimed for extending objects backing store when it runs out of space.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/587203002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24286 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 13:11:27 +00:00
yangguo@chromium.org
43538e57a4
Refactor bailout reasons and disable optimization in more cases.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/596783002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24161 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 07:08:27 +00:00
mvstanton@chromium.org
6bb1340515
Make KeyedLoads from a sloppy arguments array use a handler.
...
Before, a custom stub was installed.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/546683003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 13:23:27 +00:00
mvstanton@chromium.org
a4176d2052
Removing ic.h from code-stubs.h
...
CodeStubs use state types defined in ic.h, but this has the unfortunate effect of spreading ic.h all over the place. Instead, define these shared state types in ic-public.h and allow ic.h to concern itself with internal state change of the ICs.
More work could/should be done here, but this is a first step.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/565873002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23977 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 12:51:33 +00:00
arv@chromium.org
45d8e74cd6
ES6: Add support for method shorthand in object literals
...
This is governed by the harmony-object-literals flag.
BUG=v8:3516
LOG=Y
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/477263002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 16:39:42 +00:00
yangguo@chromium.org
9da1d7dc15
Get CallInterfaceDescriptor directly from CodeStub.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/552803002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 15:18:54 +00:00
yangguo@chromium.org
014c0fe278
Initialize CodeStubInterfaceDescriptor in the constructor.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/553833002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 13:27:56 +00:00
mvstanton@chromium.org
6e1ebdcbc3
To aid vector-based load ic work, we need to be able to handle
...
the megamorphic load case in hydrogen. A simple approach is to
wrap the probe activity in a hydrogen instruction.
The instruction is novel in that it always tail-calls away.
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/535873002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 12:51:29 +00:00
yangguo@chromium.org
b7ea991a06
Do not cache CodeStubInterfaceDescriptor on the isolate.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/544123002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-05 15:20:45 +00:00
mvstanton@chromium.org
c2fe5b2b68
Make concrete classes for individual call descriptors. The ic-convention classes that hold register specifications are merged into these new call descriptor classes, which should represent a final home for that information.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/527093002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 10:51:51 +00:00
yangguo@chromium.org
bdead275bb
Sub-minor-key-ify HandlerStubs.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/528773002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 13:55:39 +00:00
yangguo@chromium.org
3cfef1e09e
Sub-minor-key-ify four HydrogenCodeStubs.
...
- FastNewContextStub
- FastCloneShallowArrayStub
- ToBooleanStub
- ElementsTransitionAndStoreStub.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/513653003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 07:02:53 +00:00
mvstanton@chromium.org
76e22ca629
Added vector-based loadic hydrogen stubs. Not yet callable.
...
The next step is to integrate the use of vector[slot] into the IC
infrastructure so it can do the right thing for a vector-based ic.
Then these stubs can be installed. For now, they immediately bail out
to the miss handler.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/499343002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23405 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 14:12:47 +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
mstarzinger@chromium.org
8627bd5347
Make Clang 3.0 happy about static cast in DoGenerateCode.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/453973002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22998 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-08 13:33:28 +00:00
mstarzinger@chromium.org
ade23c891a
Extend ToBooleanStub to be able to return oddballs.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/450273002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22997 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-08 12:41:57 +00:00
verwaest@chromium.org
a7aae7a811
Don't smi-untag on 64bit in the store-field stub
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/451573002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22973 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-07 13:09:33 +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
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
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
yangguo@chromium.org
2811213380
Flag for serialization when compiling code stubs if --serialize-toplevel.
...
R=mvstanton@chromium.org
BUG=v8:3465
LOG=N
Review URL: https://codereview.chromium.org/419503002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-24 12:11:30 +00:00
mvstanton@chromium.org
54636ae4e2
StubCallInterfaceDescriptor and CallInterfaceDescriptor are unified under a base class InterfaceDescriptor.
...
Handling of the context register had to be massaged to effect the unification. This will make it easier to call hydrogen code stubs directly from crankshaft.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/384403002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-17 11:50:04 +00:00
mvstanton@chromium.org
086290baf0
Use the same registers for StoreIC and KeyedStoreIC.
...
Based on https://codereview.chromium.org/389283002 ("Use register parameters in ElementsTransitionGenerator") which must land first.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/390013002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 20:43:41 +00:00