it's currently disabled because it (a) tanks performance
This is not quite true - it regressed Splay.Latency (~20%), but was
performance
neutral on the other benchmarks on Arm
and the overall regression on Octane was pretty small (~1-2%). It was
enabled
for quite some time on Arm without anyone
complaining about performance ;).
(b) breaks the marking invariant.
This was the reason it was reverted on Arm. Jaroslav wrote a test which
exposes
this issue at: https://codereview.chromium.org/681633002/. The main issue
is
that when an IC transitions to a new state, it will update a constant pool
entry
with a new pointer (which will be marked White by the GC - i.e., untraced).
If
the code object was already marked Black then it will be remarked as marked
Gray
(requiring another rescan), but the constant pool remains black even
although it
now contains a white pointer - this is bad.
The fix is to mark the OOL constant pool as gray when the IC transition
happens,
but this requires a bit of plumbing and I've not had a chance to make this
fix.
I've filed a bug with the discussion of this problem and some more details
at:
http://code.google.com/p/v8/issues/detail?id=3881 - feel free to pick it up.
https://codereview.chromium.org/882263003/
--
--
v8-dev mailing list
v8-dev@googlegroups.com
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 v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.