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