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
 | 
			
		||||
 | 
			
		||||
: 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue