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.

Reply via email to