4cab13d461
Additionally, gold is now always off (there was no point in keeping it on and we don't ship it in cross compilers so it was complicating the overall logic). JIT is also now off for ARMv6. Upstream seems to have dropped it. [ci skip]
41 lines
1.7 KiB
Diff
41 lines
1.7 KiB
Diff
This fixes JavaScriptCore on big endian systems (mainly ppc).
|
|
|
|
Without the patch, attempting to run any JS results in
|
|
a crash as the generated code was endian specific.
|
|
|
|
--- Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
|
|
+++ Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
|
|
@@ -1435,13 +1435,13 @@ llintOpWithMetadata(op_put_by_id, OpPutById, macro (size, get, dispatch, metadat
|
|
loadp StructureChain::m_vector[t3], t3
|
|
assert(macro (ok) btpnz t3, ok end)
|
|
|
|
- loadp Structure::m_prototype[t2], t2
|
|
+ loadp Structure::m_prototype + PayloadOffset[t2], t2
|
|
btpz t2, .opPutByIdTransitionChainDone
|
|
.opPutByIdTransitionChainLoop:
|
|
loadp [t3], t1
|
|
bineq t1, JSCell::m_structureID[t2], .opPutByIdSlow
|
|
addp 4, t3
|
|
- loadp Structure::m_prototype[t1], t2
|
|
+ loadp Structure::m_prototype + PayloadOffset[t1], t2
|
|
btpnz t2, .opPutByIdTransitionChainLoop
|
|
|
|
.opPutByIdTransitionChainDone:
|
|
@@ -1952,7 +1952,7 @@ end)
|
|
|
|
|
|
op(llint_throw_from_slow_path_trampoline, macro()
|
|
- loadp Callee[cfr], t1
|
|
+ loadp Callee + PayloadOffset[cfr], t1
|
|
andp MarkedBlockMask, t1
|
|
loadp MarkedBlockFooterOffset + MarkedBlock::Footer::m_vm[t1], t1
|
|
copyCalleeSavesToVMEntryFrameCalleeSavesBuffer(t1, t2)
|
|
@@ -1962,7 +1962,7 @@ op(llint_throw_from_slow_path_trampoline, macro()
|
|
# When throwing from the interpreter (i.e. throwing from LLIntSlowPaths), so
|
|
# the throw target is not necessarily interpreted code, we come to here.
|
|
# This essentially emulates the JIT's throwing protocol.
|
|
- loadp Callee[cfr], t1
|
|
+ loadp Callee + PayloadOffset[cfr], t1
|
|
andp MarkedBlockMask, t1
|
|
loadp MarkedBlockFooterOffset + MarkedBlock::Footer::m_vm[t1], t1
|
|
jmp VM::targetMachinePCForThrow[t1]
|