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 unnecessarilydb4
parent
5dcaf2553f
commit
c2a70d18b4
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue