Now the operands are kept in EBP and ECX and the vm-reg (EBX) is not
used unnecessarily
] \ 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
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