cpu.ppc: fix ##box-displaced-alien
parent
c9cba1cc00
commit
8970cbc961
|
@ -315,13 +315,13 @@ M:: ppc %unbox-any-c-ptr ( dst src temp -- )
|
|||
|
||||
: alien@ ( n -- n' ) cells object tag-number - ;
|
||||
|
||||
:: %allot-alien ( dst base displacement temp -- )
|
||||
:: %allot-alien ( dst displacement base temp -- )
|
||||
dst 4 cells alien temp %allot
|
||||
temp \ f tag-number %load-immediate
|
||||
! Store expired slot
|
||||
temp dst 1 alien@ STW
|
||||
! Store underlying-alien slot
|
||||
base dst 2 alien@ STW
|
||||
base dst 1 alien@ STW
|
||||
! Store expired slot
|
||||
temp dst 2 alien@ STW
|
||||
! Store offset
|
||||
displacement dst 3 alien@ STW ;
|
||||
|
||||
|
@ -331,7 +331,7 @@ M:: ppc %box-alien ( dst src temp -- )
|
|||
dst \ f tag-number %load-immediate
|
||||
0 src 0 CMPI
|
||||
"f" get BEQ
|
||||
dst temp src temp %allot-alien
|
||||
dst src temp temp %allot-alien
|
||||
"f" resolve-label
|
||||
] with-scope ;
|
||||
|
||||
|
@ -348,14 +348,14 @@ M:: ppc %box-displaced-alien ( dst displacement base temp -- )
|
|||
"ok" get BEQ
|
||||
temp base header-offset LWZ
|
||||
0 temp alien type-number tag-fixnum CMPI
|
||||
"ok" get BEQ
|
||||
"ok" get BNE
|
||||
! displacement += base.displacement
|
||||
temp base 3 alien@ LWZ
|
||||
displacement displacement temp ADD
|
||||
! base = base.base
|
||||
base base 1 alien@ LWZ
|
||||
"ok" resolve-label
|
||||
dst base displacement temp %allot-alien
|
||||
dst displacement base temp %allot-alien
|
||||
"end" resolve-label
|
||||
] with-scope ;
|
||||
|
||||
|
|
|
@ -255,7 +255,7 @@ M:: x86 %box-float ( dst src temp -- )
|
|||
|
||||
: alien@ ( reg n -- op ) cells alien tag-number - [+] ;
|
||||
|
||||
:: %allot-alien ( dst base displacement temp -- )
|
||||
:: %allot-alien ( dst displacement base temp -- )
|
||||
dst 4 cells alien temp %allot
|
||||
dst 1 alien@ base MOV ! alien
|
||||
dst 2 alien@ \ f tag-number MOV ! expired
|
||||
|
@ -268,7 +268,7 @@ M:: x86 %box-alien ( dst src temp -- )
|
|||
dst \ f tag-number MOV
|
||||
src 0 CMP
|
||||
"end" get JE
|
||||
dst \ f tag-number src temp %allot-alien
|
||||
dst src \ f tag-number temp %allot-alien
|
||||
"end" resolve-label
|
||||
] with-scope ;
|
||||
|
||||
|
@ -290,7 +290,7 @@ M:: x86 %box-displaced-alien ( dst displacement base temp -- )
|
|||
! base = base.base
|
||||
base base 1 alien@ MOV
|
||||
"ok" resolve-label
|
||||
dst base displacement temp %allot-alien
|
||||
dst displacement base temp %allot-alien
|
||||
"end" resolve-label
|
||||
] with-scope ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue