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 - ; : 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 dst 4 cells alien temp %allot
temp \ f tag-number %load-immediate temp \ f tag-number %load-immediate
! Store expired slot
temp dst 1 alien@ STW
! Store underlying-alien slot ! Store underlying-alien slot
base dst 2 alien@ STW base dst 1 alien@ STW
! Store expired slot
temp dst 2 alien@ STW
! Store offset ! Store offset
displacement dst 3 alien@ STW ; displacement dst 3 alien@ STW ;
@ -331,7 +331,7 @@ M:: ppc %box-alien ( dst src temp -- )
dst \ f tag-number %load-immediate dst \ f tag-number %load-immediate
0 src 0 CMPI 0 src 0 CMPI
"f" get BEQ "f" get BEQ
dst temp src temp %allot-alien dst src temp temp %allot-alien
"f" resolve-label "f" resolve-label
] with-scope ; ] with-scope ;
@ -348,14 +348,14 @@ M:: ppc %box-displaced-alien ( dst displacement base temp -- )
"ok" get BEQ "ok" get BEQ
temp base header-offset LWZ temp base header-offset LWZ
0 temp alien type-number tag-fixnum CMPI 0 temp alien type-number tag-fixnum CMPI
"ok" get BEQ "ok" get BNE
! displacement += base.displacement ! displacement += base.displacement
temp base 3 alien@ LWZ temp base 3 alien@ LWZ
displacement displacement temp ADD displacement displacement temp ADD
! base = base.base ! base = base.base
base base 1 alien@ LWZ base base 1 alien@ LWZ
"ok" resolve-label "ok" resolve-label
dst base displacement temp %allot-alien dst displacement base temp %allot-alien
"end" resolve-label "end" resolve-label
] with-scope ; ] with-scope ;

View File

@ -255,7 +255,7 @@ M:: x86 %box-float ( dst src temp -- )
: alien@ ( reg n -- op ) cells alien tag-number - [+] ; : 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 4 cells alien temp %allot
dst 1 alien@ base MOV ! alien dst 1 alien@ base MOV ! alien
dst 2 alien@ \ f tag-number MOV ! expired dst 2 alien@ \ f tag-number MOV ! expired
@ -268,7 +268,7 @@ M:: x86 %box-alien ( dst src temp -- )
dst \ f tag-number MOV dst \ f tag-number MOV
src 0 CMP src 0 CMP
"end" get JE "end" get JE
dst \ f tag-number src temp %allot-alien dst src \ f tag-number temp %allot-alien
"end" resolve-label "end" resolve-label
] with-scope ; ] with-scope ;
@ -290,7 +290,7 @@ M:: x86 %box-displaced-alien ( dst displacement base temp -- )
! base = base.base ! base = base.base
base base 1 alien@ MOV base base 1 alien@ MOV
"ok" resolve-label "ok" resolve-label
dst base displacement temp %allot-alien dst displacement base temp %allot-alien
"end" resolve-label "end" resolve-label
] with-scope ; ] with-scope ;