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

Issue 1016803002: Remove PropertyCell space (Closed)

Created:
5 years, 9 months ago by Toon Verwaest
Modified:
5 years, 9 months ago
CC:
v8-dev
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

Remove PropertyCell space Replaces StoreGlobalCell / LoadGlobalCell with NamedField variants that use write barriers. BUG= Committed: https://crrev.com/16c8485a35efc36cf6ccd15185282d65412e1502 Cr-Commit-Position: refs/heads/master@{#27269}

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : #

Total comments: 1

Patch Set 4 : #

Patch Set 5 : #

Patch Set 6 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+71 lines, -634 lines) Patch
M include/v8.h View 1 2 3 4 5 1 chunk +1 line, -1 line 0 comments Download
M src/api.cc View 1 2 3 4 5 1 chunk +0 lines, -4 lines 0 comments Download
M src/arm/lithium-arm.h View 4 chunks +0 lines, -24 lines 0 comments Download
M src/arm/lithium-arm.cc View 2 chunks +0 lines, -18 lines 0 comments Download
M src/arm/lithium-codegen-arm.cc View 1 2 3 4 5 2 chunks +0 lines, -37 lines 0 comments Download
M src/arm64/lithium-arm64.h View 4 chunks +0 lines, -26 lines 0 comments Download
M src/arm64/lithium-arm64.cc View 2 chunks +0 lines, -20 lines 0 comments Download
M src/arm64/lithium-codegen-arm64.cc View 1 2 3 4 5 2 chunks +0 lines, -35 lines 0 comments Download
M src/code-stubs-hydrogen.cc View 1 chunk +1 line, -2 lines 0 comments Download
M src/counters.h View 1 2 3 4 5 4 chunks +0 lines, -11 lines 0 comments Download
M src/extensions/statistics-extension.cc View 1 2 3 4 5 1 chunk +0 lines, -5 lines 0 comments Download
M src/globals.h View 1 2 3 4 5 1 chunk +7 lines, -8 lines 0 comments Download
M src/heap/heap.h View 1 2 3 4 5 4 chunks +0 lines, -6 lines 0 comments Download
M src/heap/heap.cc View 1 2 3 4 5 23 chunks +7 lines, -70 lines 0 comments Download
M src/heap/heap-inl.h View 1 2 3 4 5 2 chunks +0 lines, -3 lines 0 comments Download
M src/heap/incremental-marking.cc View 1 2 3 4 5 3 chunks +0 lines, -3 lines 0 comments Download
M src/heap/mark-compact.cc View 1 2 3 4 5 11 chunks +1 line, -35 lines 0 comments Download
M src/heap/spaces.h View 1 2 3 4 5 1 chunk +0 lines, -25 lines 0 comments Download
M src/heap/spaces.cc View 1 2 3 4 5 4 chunks +1 line, -10 lines 0 comments Download
M src/hydrogen.cc View 1 2 2 chunks +10 lines, -4 lines 0 comments Download
M src/hydrogen-gvn.h View 1 2 2 chunks +2 lines, -2 lines 0 comments Download
M src/hydrogen-gvn.cc View 1 2 3 chunks +24 lines, -17 lines 0 comments Download
M src/hydrogen-instructions.h View 1 2 3 4 5 8 chunks +1 line, -92 lines 0 comments Download
M src/hydrogen-instructions.cc View 1 2 3 4 5 4 chunks +0 lines, -18 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 1 2 3 4 5 2 chunks +0 lines, -29 lines 0 comments Download
M src/ia32/lithium-ia32.h View 4 chunks +0 lines, -22 lines 0 comments Download
M src/ia32/lithium-ia32.cc View 2 chunks +0 lines, -15 lines 0 comments Download
M src/ic/ic.h View 1 chunk +2 lines, -2 lines 0 comments Download
M src/objects.h View 1 2 3 4 5 4 chunks +4 lines, -2 lines 0 comments Download
M src/objects-inl.h View 1 chunk +1 line, -1 line 0 comments Download
M src/serialize.h View 1 2 3 4 2 chunks +6 lines, -4 lines 0 comments Download
M src/serialize.cc View 1 2 3 4 5 3 chunks +3 lines, -5 lines 0 comments Download
M src/x64/lithium-codegen-x64.cc View 1 2 3 4 5 2 chunks +0 lines, -36 lines 0 comments Download
M src/x64/lithium-x64.h View 4 chunks +0 lines, -24 lines 0 comments Download
M src/x64/lithium-x64.cc View 2 chunks +0 lines, -18 lines 0 comments Download

Messages

Total messages: 15 (5 generated)
Toon Verwaest
PTAL
5 years, 9 months ago (2015-03-17 16:43:57 UTC) #2
dcarney
https://codereview.chromium.org/1016803002/diff/40001/src/objects-inl.h File src/objects-inl.h (right): https://codereview.chromium.org/1016803002/diff/40001/src/objects-inl.h#newcode1898 src/objects-inl.h:1898: DCHECK(!val->IsPropertyCell() && !val->IsCell()); the overloaded setter for PropertyCell seems ...
5 years, 9 months ago (2015-03-17 19:22:57 UTC) #4
yangguo
There are a couple of comments in serialize.h that say that there is one opcode ...
5 years, 9 months ago (2015-03-17 19:58:07 UTC) #6
Toon Verwaest
Woops. I had updated that locally but forgot. Will do so. About separating cell / ...
5 years, 9 months ago (2015-03-17 21:17:27 UTC) #7
Hannes Payer (out of office)
LGTM
5 years, 9 months ago (2015-03-18 10:13:51 UTC) #8
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1016803002/100001
5 years, 9 months ago (2015-03-18 10:23:52 UTC) #11
commit-bot: I haz the power
Committed patchset #6 (id:100001)
5 years, 9 months ago (2015-03-18 11:43:58 UTC) #12
commit-bot: I haz the power
Patchset 6 (id:??) landed as https://crrev.com/16c8485a35efc36cf6ccd15185282d65412e1502 Cr-Commit-Position: refs/heads/master@{#27269}
5 years, 9 months ago (2015-03-18 11:44:07 UTC) #13
Benedikt Meurer
Where's the design doc for this change? What are the implications?
5 years, 9 months ago (2015-03-19 07:06:37 UTC) #14
Toon Verwaest
5 years, 9 months ago (2015-03-19 12:56:56 UTC) #15
Message was sent while issue was closed.
As far as I can tell this only affects a few microbenchmarks in sunspider, which
are buggy. They are buggy in the sense that they want to use local variables for
computation, but "forget" to put var in front of the variable name. E.g., "var
a1 = a2 = a3 = ..." makes a1 local, but a2, a3, ... global.

It affects them since now we need a write barrier. However, in all those
micro-benchmarks we store numbers. Representation tracking for globals will
allow us to avoid both the write barrier and the double allocation in
Crankshaft, hopefully restoring (and perhaps even improving beyond original)
performance.

The reason for removal was that it's just an extra source of fragmentation, and
causes extra GC overhead (splay actually improved slightly when I removed it).
The only cost is the write barrier, but "proper code" shouldn't write to globals
so frequently anyway. (It isn't measurable outside of sunspider.)

The reason why I disinherited PropertyCell from Cell is that they have nothing
to do with each other, apart from the fact that they both contain a value-field.
Both used to omit write-barriers, but now PropertyCell doesn't anymore. Putting
them in the same hierarchy became dangerous, as Dan noted in his comment on this
CL.

Powered by Google App Engine
This is Rietveld 408576698