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

Issue 151148: X64: Move remembered set to a safe location on x64 platform. (Closed)

Created:
11 years, 5 months ago by William Hesse
Modified:
9 years, 7 months ago
CC:
v8-dev
Visibility:
Public.

Description

X64: Move remembered set to a safe location on x64 platform. Committed: http://code.google.com/p/v8/source/detail?r=2331

Patch Set 1 #

Total comments: 5
Unified diffs Side-by-side diffs Delta from patch set Stats (+29 lines, -15 lines) Patch
M src/spaces.h View 2 chunks +18 lines, -5 lines 2 comments Download
M src/spaces-inl.h View 4 chunks +11 lines, -10 lines 3 comments Download

Messages

Total messages: 2 (0 generated)
William Hesse
The remembered set on x64 is 1/2 the size of the set on ia32, so ...
11 years, 5 months ago (2009-07-01 11:52:28 UTC) #1
Lasse Reichstein
11 years, 5 months ago (2009-07-01 12:30:17 UTC) #2
LGTM

http://codereview.chromium.org/151148/diff/1/2
File src/spaces-inl.h (right):

http://codereview.chromium.org/151148/diff/1/2#newcode107
Line 107: // The reset address is computed as:
reset -> rset (or RSet?)

http://codereview.chromium.org/151148/diff/1/2#newcode108
Line 108: //    page_address + words * 4 + kRSetOffset.
words -> quadwords

http://codereview.chromium.org/151148/diff/1/2#newcode110
Line 110: // even on the X64 architecture.
We could probably speed up a little by loading 64 bits at a time when scanning
for non-null bits.

http://codereview.chromium.org/151148/diff/1/3
File src/spaces.h (right):

http://codereview.chromium.org/151148/diff/1/3#newcode224
Line 224: static const int kRSetOffset = 2 * kPointerSize;  // Room for two
pointers.
Since we have room for it, we might want the RSet to be 32-bit aligned.
Since we don't use the initial part of the Rset (the RSet of the RSet itself),
the actually used part starts 4 bytes later than this, so we could change
kRSetOffset to 28.
But see comment below on lowering the 256 byte object start, which also changes
how many bits we don't use.

http://codereview.chromium.org/151148/diff/1/3#newcode234
Line 234: static const int kObjectStartOffset = 256;
We should be able to lower this to 160 and still work.
That requires 126 bytes of RSet, which can fit at position 32 and still be
32-bit aligned.
If we don't care about 32-bit alignment, we can even go down to 144.
Suggested constants:
kObjectStartOffset = 160;
kRsetOffset = 32;  // size 125 (== (8192 - 160) >> 6 )
We can still use the first 2.5 bytes of this RSet for something else if we want.

Powered by Google App Engine
This is Rietveld 408576698