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

Issue 10855098: Deoptimization support for accessors. (Closed)

Created:
8 years, 4 months ago by Sven Panne
Modified:
8 years, 4 months ago
Reviewers:
Michael Starzinger
CC:
v8-dev
Visibility:
Public.

Description

Deoptimization support for accessors. Highlights of this CL: * Introduced a new opcode in the deoptimizer for a setter stub frame. * Added a global setter stub for returning after deoptimizing a setter. * We do not need special deopt support for getters, although the getter stub creates an internal frame. The normal machinery works just right for this case, although we generate a stack that can never occur during normal fullcode execution. If this hurts us one day, we can parameterize and reuse the setter deopt machinery. Committed: https://code.google.com/p/v8/source/detail?r=12328

Patch Set 1 #

Patch Set 2 : Implemented initial part of DoComputeSetterStubFrame. #

Patch Set 3 : Construct output frame, still incomplete #

Patch Set 4 : Output all frame entries, some are still stubs #

Patch Set 5 : Output correct code object. #

Patch Set 6 : Introduced setter stub for deopt. #

Patch Set 7 : Temporarily enabled inlining. Deopt getters. #

Patch Set 8 : Fixed setter deopt on ia32. #

Patch Set 9 : Removed superfluous method declaration. #

Patch Set 10 : Fixed inlining tests. Really enable optimization. Fixed height. #

Patch Set 11 : Rebased. #

Patch Set 12 : Rebased again. #

Patch Set 13 : Reverted deopt limit #

Patch Set 14 : Support on ARM and MIPS #

Patch Set 15 : Upload failure... #

Patch Set 16 : Fixed unit tests. #

Total comments: 20

Patch Set 17 : Addressed review feedback #

Patch Set 18 : ARM and MIPS support complete #

Total comments: 6

Patch Set 19 : Tiny test changes. Rebased. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+830 lines, -160 lines) Patch
M include/v8.h View 1 2 3 4 5 1 chunk +1 line, -1 line 0 comments Download
M src/arm/deoptimizer-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +108 lines, -0 lines 0 comments Download
M src/arm/lithium-codegen-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +3 lines, -1 line 0 comments Download
M src/arm/stub-cache-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 3 chunks +43 lines, -16 lines 0 comments Download
M src/builtins.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +2 lines, -0 lines 0 comments Download
M src/builtins.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 2 chunks +6 lines, -0 lines 0 comments Download
M src/deoptimizer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 3 chunks +4 lines, -0 lines 0 comments Download
M src/deoptimizer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 7 chunks +25 lines, -1 line 0 comments Download
M src/flag-definitions.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +1 line, -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 2 chunks +7 lines, -1 line 0 comments Download
M src/ia32/deoptimizer-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +109 lines, -0 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +3 lines, -1 line 0 comments Download
M src/ia32/stub-cache-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 3 chunks +46 lines, -19 lines 0 comments Download
M src/mips/deoptimizer-mips.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +108 lines, -0 lines 0 comments Download
M src/mips/lithium-codegen-mips.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +3 lines, -1 line 0 comments Download
M src/mips/stub-cache-mips.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 3 chunks +44 lines, -17 lines 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 1 chunk +10 lines, -0 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 +3 lines, -0 lines 0 comments Download
M src/x64/deoptimizer-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +109 lines, -0 lines 0 comments Download
M src/x64/lithium-codegen-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +3 lines, -1 line 0 comments Download
M src/x64/stub-cache-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 3 chunks +44 lines, -17 lines 0 comments Download
M test/mjsunit/compiler/inline-accessors.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 12 chunks +148 lines, -83 lines 0 comments Download

Messages

Total messages: 6 (0 generated)
Sven Panne
Submitted for an initial review round, ia32 and x64 support is fully functional, 2 (hopefully ...
8 years, 4 months ago (2012-08-16 13:33:04 UTC) #1
Michael Starzinger
First round. One real comment in the deoptimizer and a bunch of nits. I just ...
8 years, 4 months ago (2012-08-16 17:20:04 UTC) #2
Sven Panne
Addressed feedback comments. Now the only things missing are 1 tiny stack slot on ARM ...
8 years, 4 months ago (2012-08-17 07:27:26 UTC) #3
Sven Panne
ARM and MIPS support complete, so the whole CL should be complete. :-) PTAL...
8 years, 4 months ago (2012-08-17 09:30:12 UTC) #4
Michael Starzinger
LGTM (with a few final nits). As discussed offline, it would be nice to trigger ...
8 years, 4 months ago (2012-08-17 10:03:51 UTC) #5
Sven Panne
8 years, 4 months ago (2012-08-17 11:33:49 UTC) #6
https://chromiumcodereview.appspot.com/10855098/diff/6036/test/mjsunit/compil...
File test/mjsunit/compiler/inline-accessors.js (right):

https://chromiumcodereview.appspot.com/10855098/diff/6036/test/mjsunit/compil...
test/mjsunit/compiler/inline-accessors.js:74: TestInlinedGetter(context, obj,
expected);
On 2012/08/17 10:03:51, Michael Starzinger wrote:
> Can we add assertFalse(expectException) after the test?

Done.

https://chromiumcodereview.appspot.com/10855098/diff/6036/test/mjsunit/compil...
test/mjsunit/compiler/inline-accessors.js:234: TestInlinedSetter(context, obj,
value, expected);
On 2012/08/17 10:03:51, Michael Starzinger wrote:
> Likewise.

Done.

Powered by Google App Engine
This is Rietveld 408576698