diff --git a/basis/cpu/ppc/ppc.factor b/basis/cpu/ppc/ppc.factor index c3d89e6d02..d21f5756b9 100644 --- a/basis/cpu/ppc/ppc.factor +++ b/basis/cpu/ppc/ppc.factor @@ -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 ; diff --git a/basis/cpu/x86/x86.factor b/basis/cpu/x86/x86.factor index 456b430a9e..0d028a4862 100644 --- a/basis/cpu/x86/x86.factor +++ b/basis/cpu/x86/x86.factor @@ -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 ;