bootstrap.x86: fix assembler code bug in fixnum*

Now the operands are kept in EBP and ECX and the vm-reg (EBX) is not
used unnecessarily
db4
Björn Lindqvist 2015-05-25 15:04:33 +02:00 committed by Doug Coleman
parent 5dcaf2553f
commit c2a70d18b4
1 changed files with 6 additions and 7 deletions

View File

@ -104,7 +104,7 @@ IN: bootstrap.x86
] \ c-to-factor define-sub-primitive ] \ c-to-factor define-sub-primitive
: signal-handler-save-regs ( -- regs ) : signal-handler-save-regs ( -- regs )
{ EAX ECX EDX EBX EBP ESI EDI } ; { EAX EBX ECX EDX EBP EDI ESI } ;
[ [
EAX ds-reg [] MOV EAX ds-reg [] MOV
@ -244,18 +244,17 @@ IN: bootstrap.x86
ds-reg 4 SUB ds-reg 4 SUB
jit-load-vm jit-load-vm
jit-save-context jit-save-context
EBX ds-reg [] MOV ECX ds-reg [] MOV
EAX EBX MOV EAX ECX MOV
EBP ds-reg 4 [+] MOV EBP ds-reg 4 [+] MOV
EBP tag-bits get SAR EBP tag-bits get SAR
! clobbers EDX
EBP IMUL EBP IMUL
ds-reg [] EAX MOV ds-reg [] EAX MOV
[ JNO ] [ JNO ]
[ [
EBX tag-bits get SAR ECX tag-bits get SAR
jit-load-vm ECX EBP vm-reg "overflow_fixnum_multiply" jit-call-3arg
EBX EBP vm-reg "overflow_fixnum_multiply" jit-call-3arg
] ]
jit-conditional jit-conditional
] \ fixnum* define-sub-primitive ] \ fixnum* define-sub-primitive