0 3 LOAD32 rc-absolute-ppc-2/2 rt-stack-chain jit-rel\r
4 3 0 LWZ\r
1 4 0 STW\r
- 0 3 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel\r
- 3 MTCTR\r
+ 4 0 swap LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel\r
+ 0 5 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel\r
+ 5 MTCTR\r
BCTR\r
] jit-primitive jit-define\r
\r
[\r
3 ds-reg 0 LWZ\r
ds-reg dup 4 SUBI\r
- 4 3 quot-xt-offset LWZ\r
- 4 MTCTR\r
+ 4 0 swap LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel\r
+ 5 3 quot-xt-offset LWZ\r
+ 5 MTCTR\r
BCTR\r
] \ (call) define-sub-primitive\r
\r
mtlr r0 /* prepare to return to restored callstack */
blr /* go */
-DEF(void,throw_impl,(CELL quot, F_STACK_FRAME *rewind_to)):
+DEF(void,throw_impl,(CELL quot, F_STACK_FRAME *rewind_to, void *vm)):
mr r1,r4 /* compute new stack pointer */
+ mr r4,r5 /* make vm ptr 2nd arg in case quot_xt = lazy_jit_compile */
lwz r0,LR_SAVE(r1) /* we have rewound the stack; load return address */
mtlr r0
JUMP_QUOT /* call the quotation */
-DEF(void,lazy_jit_compile,(CELL quot)):
+DEF(void,lazy_jit_compile,(CELL quot, void *vm)):
+ mr r5,r4 /* vm ptr is 3rd arg */
mr r4,r1 /* save stack pointer */
PROLOGUE
bl MANGLE(lazy_jit_compile_impl)