From 6bb647d3087652b9ec3e1def350275c2ab1dd96b Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Thu, 24 Sep 2009 19:59:37 +0100 Subject: [PATCH] fix lazy_jit_compile to not abuse stack on x86.32 --- vm/cpu-x86.32.S | 4 +--- vm/quotations.cpp | 2 +- vm/quotations.hpp | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/vm/cpu-x86.32.S b/vm/cpu-x86.32.S index 3a5907cc78..3eeb798093 100644 --- a/vm/cpu-x86.32.S +++ b/vm/cpu-x86.32.S @@ -94,12 +94,10 @@ DEF(F_FASTCALL void,throw_impl,(CELL quot, F_STACK_FRAME *rewind_to, void *vm)): jmp *QUOT_XT_OFFSET(ARG0) DEF(F_FASTCALL void,lazy_jit_compile,(CELL quot, void *vm)): - mov ARG1,NV_TEMP_REG /* stash vm ptr */ + mov ARG1,ARG2 mov STACK_REG,ARG1 /* Save stack pointer */ sub $STACK_PADDING,STACK_REG - push NV_TEMP_REG /* push vm ptr as arg3 */ call MANGLE(lazy_jit_compile_impl) - pop NV_TEMP_REG mov RETURN_REG,ARG0 /* No-op on 32-bit */ add $STACK_PADDING,STACK_REG jmp *QUOT_XT_OFFSET(ARG0) /* Call the quotation */ diff --git a/vm/quotations.cpp b/vm/quotations.cpp index 1bc6240481..e5a2a53f86 100755 --- a/vm/quotations.cpp +++ b/vm/quotations.cpp @@ -368,7 +368,7 @@ cell factor_vm::lazy_jit_compile_impl(cell quot_, stack_frame *stack) return quot.value(); } -VM_ASM_API cell lazy_jit_compile_impl(cell quot_, stack_frame *stack, factor_vm *myvm) +VM_ASM_API_OVERFLOW cell lazy_jit_compile_impl(cell quot_, stack_frame *stack, factor_vm *myvm) { ASSERTVM(); return VM_PTR->lazy_jit_compile_impl(quot_,stack); diff --git a/vm/quotations.hpp b/vm/quotations.hpp index b21884a35b..43beb05112 100755 --- a/vm/quotations.hpp +++ b/vm/quotations.hpp @@ -27,7 +27,7 @@ PRIMITIVE(jit_compile); PRIMITIVE(array_to_quotation); PRIMITIVE(quotation_xt); -VM_ASM_API cell lazy_jit_compile_impl(cell quot, stack_frame *stack, factor_vm *myvm); +VM_ASM_API_OVERFLOW cell lazy_jit_compile_impl(cell quot, stack_frame *stack, factor_vm *myvm); PRIMITIVE(quot_compiled_p);