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.
https://codereview.chromium.org/1016803002/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.