cpu.ppc: fix ##box-displaced-alien

sheeple 2009-08-27 04:43:45 -05:00
parent c9cba1cc00
commit 8970cbc961
2 changed files with 10 additions and 10 deletions

View File

@ -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 ;

View File

@ -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 ;