You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Store the saved-IP at [FP + saved_ip_fp_offset] instead of [SP, #8] to
eliminate the theoretical overlap between the saved-IP slot and
vectorcall args[0] at kVectorcallArgsOffset (also [SP+8]).
Key change: pre-compute saved_ip_fp_offset in getVectorcallEntry after
register allocation but before generateCode, because generateAssemblyBody
(which emits ADR+STR for saved-IP) runs before computeFrameInfo. A
JIT_CHECK in computeFrameInfo verifies the pre-computed value matches.
Files changed:
environ.h - add saved_ip_fp_offset field to Environ
gen_asm.cpp - early offset computation + JIT_CHECK assertion
gen_asm_utils.cpp - emitCall uses FP-relative ptr_resolve
autogen.cpp - translateCall uses FP-relative ptr_resolve
code_runtime.h/cpp - savedIpFpOffset accessor for CodeRuntime
frame.cpp - getIP reads from FP + savedIpFpOffset
frame_shadow.cpp - shadow frame getIP uses same offset
Test results (15/15 CPU, PYTHONJITCOMPILATIONTHRESHOLD=1000):
11 PASS, 4 FAIL (all pre-existing, verified with CINDERJIT_DISABLE=1)
0 commit comments