diff --git a/basis/cpu/x86/64/bootstrap.factor b/basis/cpu/x86/64/bootstrap.factor index 28309e7d97..aa7a5dcd67 100644 --- a/basis/cpu/x86/64/bootstrap.factor +++ b/basis/cpu/x86/64/bootstrap.factor @@ -21,9 +21,7 @@ IN: bootstrap.x86 : rex-length ( -- n ) 1 ; [ - ! HACK: stash vm pointer above the ds stack - temp0 0 MOV rc-absolute-cell rt-vm jit-rel - ds-reg bootstrap-cell [+] temp0 MOV + ! load stack_chain temp0 0 MOV rc-absolute-cell rt-stack-chain jit-rel temp0 temp0 [] MOV @@ -31,6 +29,8 @@ IN: bootstrap.x86 temp0 [] stack-reg MOV ! load XT temp1 0 MOV rc-absolute-cell rt-primitive jit-rel + ! load vm ptr + arg 0 MOV rc-absolute-cell rt-vm jit-rel ! go temp1 JMP ] jit-primitive jit-define diff --git a/vm/cpu-x86.64.S b/vm/cpu-x86.64.S index 4d5c70616f..704cebe804 100644 --- a/vm/cpu-x86.64.S +++ b/vm/cpu-x86.64.S @@ -79,10 +79,11 @@ DEF(long long,read_timestamp_counter,(void)): or %rdx,%rax ret -DEF(void,primitive_inline_cache_miss,(void)): +DEF(void,primitive_inline_cache_miss,(void *vm)): mov (%rsp),%rbx -DEF(void,primitive_inline_cache_miss_tail,(void)): +DEF(void,primitive_inline_cache_miss_tail,(void *vm)): sub $STACK_PADDING,%rsp + mov ARG0,ARG1 mov %rbx,ARG0 call MANGLE(inline_cache_miss) add $STACK_PADDING,%rsp