Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Issue 16925008: Generate StoreGlobal stubs with Hydrogen (Closed)

Created:
7 years, 6 months ago by danno
Modified:
7 years, 5 months ago
Reviewers:
haitao.feng, ulan, rossberg
CC:
v8-dev
Visibility:
Public.

Description

Generate StoreGlobal stubs with Hydrogen - Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change. - The more general case generates code that is just as good as the hand-written assembly stubs on all platforms. R=rossberg@chromium.org, ulan@chromium.org Committed: http://code.google.com/p/v8/source/detail?r=15419 Committed: http://code.google.com/p/v8/source/detail?r=15512

Patch Set 1 #

Patch Set 2 : Right diff #

Patch Set 3 : ia32 works #

Patch Set 4 : Implement ia23 #

Patch Set 5 : Clean up code #

Patch Set 6 : More iteration #

Patch Set 7 : Fix stuff #

Patch Set 8 : Add code dependencies #

Patch Set 9 : Finish code dependencies #

Total comments: 1

Patch Set 10 : ia32 passes release tests #

Patch Set 11 : Cleanup #

Patch Set 12 : More tweaks #

Patch Set 13 : Latest changes #

Patch Set 14 : #

Patch Set 15 : Fix test cases #

Total comments: 2

Patch Set 16 : Add non-SSE2 support #

Total comments: 36

Patch Set 17 : Review feedback #

Patch Set 18 : Restore test #

Patch Set 19 : Make it work again #

Patch Set 20 : Fix performance regressions #

Patch Set 21 : Merge with ToT #

Patch Set 22 : Fix ARM implementation and rebase #

Patch Set 23 : Fix numeric constant compares #

Total comments: 6

Patch Set 24 : Review feedback #

Patch Set 25 : Rebase #

Patch Set 26 : Properly handle GC during UpdateType #

Patch Set 27 : Rebase #

Patch Set 28 : Use pointer -> handle trampoline #

Total comments: 3

Patch Set 29 : Address feedback #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+418 lines, -49 lines) Patch
M src/arm/code-stubs-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 chunk +11 lines, -0 lines 0 comments Download
M src/arm/lithium-gap-resolver-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 chunks +4 lines, -1 line 0 comments Download
M src/ast.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +1 line, -0 lines 0 comments Download
M src/code-stubs.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 3 chunks +47 lines, -0 lines 0 comments Download
M src/code-stubs.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 chunk +8 lines, -0 lines 0 comments Download
M src/code-stubs-hydrogen.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +46 lines, -1 line 0 comments Download
M src/heap.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 chunk +1 line, -0 lines 0 comments Download
M src/heap.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +5 lines, -3 lines 0 comments Download
M src/hydrogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +8 lines, -1 line 0 comments Download
M src/hydrogen.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6 chunks +46 lines, -8 lines 0 comments Download
M src/hydrogen-instructions.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6 chunks +13 lines, -1 line 0 comments Download
M src/hydrogen-instructions.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 9 chunks +26 lines, -2 lines 0 comments Download
M src/ia32/code-stubs-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1 chunk +11 lines, -0 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 chunks +1 line, -1 line 0 comments Download
M src/ia32/lithium-gap-resolver-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 chunk +25 lines, -0 lines 0 comments Download
M src/ic.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 3 chunks +5 lines, -2 lines 0 comments Download
M src/ic.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 5 chunks +20 lines, -4 lines 0 comments Download
M src/objects.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 3 chunks +19 lines, -1 line 0 comments Download
M src/objects.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 6 chunks +64 lines, -6 lines 0 comments Download
M src/objects-inl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1 chunk +1 line, -0 lines 0 comments Download
M src/runtime.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +3 lines, -2 lines 0 comments Download
M src/stub-cache.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +1 line, -0 lines 0 comments Download
M src/stub-cache.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +23 lines, -12 lines 0 comments Download
M src/x64/code-stubs-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 chunks +12 lines, -1 line 0 comments Download
M src/x64/lithium-gap-resolver-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 chunk +14 lines, -0 lines 1 comment Download
M test/mjsunit/regress/regress-2618.js View 1 2 3 4 5 6 7 8 9 3 chunks +3 lines, -3 lines 0 comments Download

Messages

Total messages: 14 (0 generated)
rossberg
https://codereview.chromium.org/16925008/diff/21001/src/types.cc File src/types.cc (right): https://codereview.chromium.org/16925008/diff/21001/src/types.cc#newcode305 src/types.cc:305: if (type->is_bitset()) return this->Is(type); This whole piece of code ...
7 years, 6 months ago (2013-06-19 09:45:15 UTC) #1
rossberg
CL looks plausible to me. However, my understanding of the code dependency (and GC) stuff ...
7 years, 6 months ago (2013-06-25 10:47:38 UTC) #2
danno
Please take another look, much sub-functionality has already been landed in other CLs. Ulan, can ...
7 years, 5 months ago (2013-06-28 13:56:04 UTC) #3
ulan
> Ulan, can you please take a look at the dependency changes? Dependency changes in ...
7 years, 5 months ago (2013-06-28 14:43:16 UTC) #4
ulan
https://codereview.chromium.org/16925008/diff/81001/src/code-stubs.h File src/code-stubs.h (right): https://codereview.chromium.org/16925008/diff/81001/src/code-stubs.h#newcode541 src/code-stubs.h:541: } "}" fits in the previous line. https://codereview.chromium.org/16925008/diff/81001/src/hydrogen-instructions.cc File ...
7 years, 5 months ago (2013-07-01 11:35:03 UTC) #5
danno
Feedback addressed, please take another look. https://codereview.chromium.org/16925008/diff/81001/src/code-stubs.h File src/code-stubs.h (right): https://codereview.chromium.org/16925008/diff/81001/src/code-stubs.h#newcode541 src/code-stubs.h:541: } On 2013/07/01 ...
7 years, 5 months ago (2013-07-01 12:52:23 UTC) #6
ulan
> The idea behind code templates is that you create a template with > dummy/placeholder ...
7 years, 5 months ago (2013-07-01 13:02:52 UTC) #7
danno
Committed patchset #24 manually as r15419 (presubmit successful).
7 years, 5 months ago (2013-07-01 13:22:30 UTC) #8
danno
Please take another look at just the deltas to patch set 28. These were the ...
7 years, 5 months ago (2013-07-05 09:30:53 UTC) #9
rossberg
Latest patch LGTM https://codereview.chromium.org/16925008/diff/114001/src/objects.cc File src/objects.cc (right): https://codereview.chromium.org/16925008/diff/114001/src/objects.cc#newcode15862 src/objects.cc:15862: Type* new_type = static_cast<Type*>(maybe_type); Nit: you ...
7 years, 5 months ago (2013-07-05 10:00:33 UTC) #10
danno
Committed patchset #29 manually as r15512 (presubmit successful).
7 years, 5 months ago (2013-07-05 10:34:18 UTC) #11
haitao.feng
https://codereview.chromium.org/16925008/diff/118002/src/x64/lithium-gap-resolver-x64.cc File src/x64/lithium-gap-resolver-x64.cc (right): https://codereview.chromium.org/16925008/diff/118002/src/x64/lithium-gap-resolver-x64.cc#newcode214 src/x64/lithium-gap-resolver-x64.cc:214: __ push(Immediate(upper)); It seems that this code is not ...
7 years, 5 months ago (2013-07-08 01:57:50 UTC) #12
danno
Feedback addressed, landed. https://codereview.chromium.org/16925008/diff/114001/src/objects.cc File src/objects.cc (right): https://codereview.chromium.org/16925008/diff/114001/src/objects.cc#newcode15862 src/objects.cc:15862: Type* new_type = static_cast<Type*>(maybe_type); On 2013/07/05 ...
7 years, 5 months ago (2013-07-08 10:09:24 UTC) #13
rossberg
7 years, 5 months ago (2013-07-08 12:42:56 UTC) #14
Message was sent while issue was closed.
https://codereview.chromium.org/16925008/diff/114001/src/objects.cc
File src/objects.cc (right):

https://codereview.chromium.org/16925008/diff/114001/src/objects.cc#newcode15862
src/objects.cc:15862: Type* new_type = static_cast<Type*>(maybe_type);
On 2013/07/08 10:09:24, danno wrote:
> On 2013/07/05 10:00:33, rossberg wrote:
> > Nit: you can combine the cast with the failure check by doing
> > 
> > if (!maybe_type->To(&new_type)) return maybe_type;
> 
> That doesn't work, unfortunately, since Type doesn't subclass from Object :-/

Ah, Type _does_ subclass Object, but it does not have its own cast operator, so
the To template picks up Object::cast, which has the wrong return type. Maybe I
should add 'cast'.

Powered by Google App Engine
This is Rietveld 408576698