Marking currently uses virtual methods, but in the general case these virtual calls are unnecessary and can be elided.
Created attachment 34809 [details]
Comment on attachment 34809 [details]
r=me but consider reformatting the long inline method definitions as suggested.
It looks like this patch breaks the ARM JIT port at r47269 with ENABLE_YARR=1 ENABLE_YARR_JIT=1 ENABLE_JIT=1 WTF_USE_JSVALUE32=1.
The GDB backtrace says:
#3 JSC::JSObject::toPrimitive (this=0x428b2660, exec=0x426a004c, preferredType=JSC::NoPreference)
#4 JSC::JSValue::toPrimitive (this=0x4007eae8, exec=0x426a004c, preferredType=JSC::NoPreference)
#6 ctiTrampoline ()
Do you have any hint or thought how to fix it?
The bug can be reproduced on ARM with interpreter and jit as well. The situation is the same with debug and with release mode also. Does iPhone run correctly?
(In reply to comment #5)
> The bug can be reproduced on ARM with interpreter and jit as well. The
> situation is the same with debug and with release mode also. Does iPhone run
I just did a trivial amount of debugging myself, and forced JSVALUE_32 on x86 and this crash occurred. Given that's the only substantive difference between ARM and x86 build settings that seems obvious and demonstrates the bug.
JSVALUE32 fix landed in r47522