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

Issue 7983045: Notify collector about lazily deoptimized code objects. (Closed)

Created:
9 years, 3 months ago by Vyacheslav Egorov (Chromium)
Modified:
9 years, 3 months ago
Reviewers:
Erik Corry
CC:
v8-dev
Visibility:
Public.

Description

Notify collector about lazily deoptimized code objects. All slots that were recorded on these objects during incremental marking should be ignored as they are no longer valid. To filter such invalidated slots out during slots buffers iteration we set all markbits under the invalidated code object to 1 after the code space was swept and before slots buffers are processed. R=erik.corry@gmail.com BUG=v8:1713 TEST=test/mjsunit/regress/regress-1713.js Committed: http://code.google.com/p/v8/source/detail?r=9402

Patch Set 1 #

Patch Set 2 : fix off by 1 error #

Patch Set 3 : fix naming #

Total comments: 2

Patch Set 4 : fix lo case #

Total comments: 1

Patch Set 5 : clear lo from rescan flag, avoid ShouldSweepLazily predicate in preparation #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+392 lines, -33 lines) Patch
M src/arm/deoptimizer-arm.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M src/ia32/deoptimizer-ia32.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M src/incremental-marking.cc View 1 2 3 4 2 chunks +23 lines, -0 lines 0 comments Download
M src/mark-compact.h View 1 2 3 5 chunks +20 lines, -2 lines 0 comments Download
M src/mark-compact.cc View 1 2 3 4 14 chunks +200 lines, -27 lines 0 comments Download
M src/spaces.h View 1 2 3 4 2 chunks +3 lines, -2 lines 0 comments Download
M src/spaces.cc View 1 2 3 4 1 chunk +4 lines, -2 lines 1 comment Download
M src/x64/deoptimizer-x64.cc View 1 chunk +5 lines, -0 lines 0 comments Download
A test/mjsunit/regress/regress-1713.js View 1 chunk +127 lines, -0 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
Vyacheslav Egorov (Chromium)
9 years, 3 months ago (2011-09-21 21:11:13 UTC) #1
Erik Corry
LGTM http://codereview.chromium.org/7983045/diff/5001/src/mark-compact.cc File src/mark-compact.cc (right): http://codereview.chromium.org/7983045/diff/5001/src/mark-compact.cc#newcode2896 src/mark-compact.cc:2896: Page* p = Page::FromAddress(addr); This doesn't work for ...
9 years, 3 months ago (2011-09-22 09:10:47 UTC) #2
Erik Corry
LEBTM http://codereview.chromium.org/7983045/diff/6001/src/mark-compact.cc File src/mark-compact.cc (right): http://codereview.chromium.org/7983045/diff/6001/src/mark-compact.cc#newcode2906 src/mark-compact.cc:2906: if (p->owner()->identity() != CODE_SPACE) return false; This will ...
9 years, 3 months ago (2011-09-22 11:43:16 UTC) #3
Vyacheslav Egorov (Chromium)
9 years, 3 months ago (2011-09-22 15:30:11 UTC) #4
I am going to commit this.

http://codereview.chromium.org/7983045/diff/8004/src/spaces.cc
File src/spaces.cc (right):

http://codereview.chromium.org/7983045/diff/8004/src/spaces.cc#newcode1936
src/spaces.cc:1936: if (!p->WasSwept()) {
The same regression test revealed a bug here.

We should not use ShouldBeSweptLazily here because it skips evacuation
candidates. 

But _new_ evacuation candidates are already selected when we call
PrepareForMarkCompact (happens only with --always-compact) and they _have_ to be
swept before the GC.

Powered by Google App Engine
This is Rietveld 408576698