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

Issue 10908194: Fix arguments object materialization during deopt. (Closed)

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

Description

Fix arguments object materialization during deopt. This fixes materialization of arguments objects for strict mode functions during deoptimization. We materialize arguments from the stack area where optimized code pushes the arguments when entering the inlined environment. For adapted invocations we use the arguments adaptor frame for materialization. R=svenpanne@chromium.org BUG=v8:2261 TEST=mjsunit/regress/regress-2261,mjsunit/compiler/inline-arguments Committed: https://code.google.com/p/v8/source/detail?r=12489

Patch Set 1 #

Patch Set 2 : Ported to other architectures. #

Total comments: 10

Patch Set 3 : Addressed comments by Sven Panne. #

Patch Set 4 : Improved test coverage and fixed bug. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+521 lines, -110 lines) Patch
M src/arm/lithium-arm.cc View 1 2 chunks +2 lines, -0 lines 0 comments Download
M src/arm/lithium-codegen-arm.h View 1 2 chunks +7 lines, -2 lines 0 comments Download
M src/arm/lithium-codegen-arm.cc View 1 2 7 chunks +42 lines, -10 lines 0 comments Download
M src/deoptimizer.h View 5 chunks +20 lines, -2 lines 0 comments Download
M src/deoptimizer.cc View 1 2 3 10 chunks +94 lines, -8 lines 0 comments Download
M src/hydrogen.h View 4 chunks +11 lines, -7 lines 0 comments Download
M src/hydrogen.cc View 5 chunks +5 lines, -0 lines 0 comments Download
M src/hydrogen-instructions.h View 3 chunks +4 lines, -0 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.h View 2 chunks +7 lines, -2 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 1 2 7 chunks +42 lines, -10 lines 0 comments Download
M src/ia32/lithium-ia32.cc View 2 chunks +2 lines, -0 lines 0 comments Download
M src/lithium.h View 4 chunks +4 lines, -0 lines 0 comments Download
M src/mips/lithium-codegen-mips.h View 1 2 chunks +7 lines, -2 lines 0 comments Download
M src/mips/lithium-codegen-mips.cc View 1 2 8 chunks +38 lines, -8 lines 0 comments Download
M src/mips/lithium-mips.cc View 1 2 chunks +2 lines, -0 lines 0 comments Download
M src/runtime.cc View 2 chunks +4 lines, -42 lines 0 comments Download
M src/x64/lithium-codegen-x64.h View 1 2 chunks +7 lines, -2 lines 0 comments Download
M src/x64/lithium-codegen-x64.cc View 1 2 7 chunks +42 lines, -10 lines 0 comments Download
M src/x64/lithium-x64.cc View 1 2 chunks +2 lines, -0 lines 0 comments Download
M test/mjsunit/compiler/inline-arguments.js View 1 2 3 3 chunks +65 lines, -4 lines 0 comments Download
M test/mjsunit/object-define-property.js View 1 chunk +1 line, -1 line 0 comments Download
A test/mjsunit/regress/regress-2261.js View 1 chunk +113 lines, -0 lines 0 comments Download

Messages

Total messages: 5 (0 generated)
Michael Starzinger
The CL only contains the ia32 port so far, but I wanted to get a ...
8 years, 3 months ago (2012-09-11 10:45:38 UTC) #1
Michael Starzinger
Ported to other architectures.
8 years, 3 months ago (2012-09-11 11:46:42 UTC) #2
Sven Panne
LGTM if nits are addressed and test cases extended. https://chromiumcodereview.appspot.com/10908194/diff/3001/src/arm/lithium-codegen-arm.cc File src/arm/lithium-codegen-arm.cc (right): https://chromiumcodereview.appspot.com/10908194/diff/3001/src/arm/lithium-codegen-arm.cc#newcode468 src/arm/lithium-codegen-arm.cc:468: ...
8 years, 3 months ago (2012-09-12 07:14:22 UTC) #3
Michael Starzinger
Addressed most of the comments. Will now work on improving test coverage. https://chromiumcodereview.appspot.com/10908194/diff/3001/src/arm/lithium-codegen-arm.cc File src/arm/lithium-codegen-arm.cc ...
8 years, 3 months ago (2012-09-12 10:07:28 UTC) #4
Michael Starzinger
8 years, 3 months ago (2012-09-12 12:04:25 UTC) #5
Improved test coverage. Landing.

https://chromiumcodereview.appspot.com/10908194/diff/3001/test/mjsunit/regres...
File test/mjsunit/regress/regress-2261.js (right):

https://chromiumcodereview.appspot.com/10908194/diff/3001/test/mjsunit/regres...
test/mjsunit/regress/regress-2261.js:32: 
On 2012/09/12 07:14:22, Sven Panne wrote:
> As was dicussed already offline, it would be good to have test cases which
> involve an arguments adaptor (both with too few/to many arguments), even if it
> is not easily possible to do without extensive copy-n-paste. I would very much
> prefer a broader test coverage for such a tricky area over copy-n-paste-free
> code. :-)
> 
> Probably these tests should live in mjsunit/compiler then.

Done. Added a generic test case to mjsunit/compiler/inline-arguments that tests
all combinations of arguments adapters for two-level inlining.

Powered by Google App Engine
This is Rietveld 408576698