]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorSlava Pestov <slava@factorcode.org>
Tue, 1 Sep 2009 01:51:27 +0000 (20:51 -0500)
committerSlava Pestov <slava@factorcode.org>
Tue, 1 Sep 2009 01:51:27 +0000 (20:51 -0500)
basis/cpu/ppc/ppc.factor

index 33619ca3e35a73ca773ae2e147f61a84641f0d80..b4f6c49183039b28344380c23d59baf34b4c0127 100644 (file)
@@ -338,7 +338,8 @@ M:: ppc %box-alien ( dst src temp -- )
 M:: ppc %box-displaced-alien ( dst displacement base displacement' base' -- )
     [
         "end" define-label
-        "ok" define-label
+        "alloc" define-label
+        "simple-case" define-label
         ! If displacement is zero, return the base
         dst base MR
         0 displacement 0 CMPI
@@ -347,19 +348,21 @@ M:: ppc %box-displaced-alien ( dst displacement base displacement' base' -- )
         displacement' :> temp
         dst 4 cells alien temp %allot
         ! If base is already a displaced alien, unpack it
-        base' base MR
-        displacement' displacement MR
         0 base \ f tag-number CMPI
-        "ok" get BEQ
+        "simple-case" get BEQ
         temp base header-offset LWZ
         0 temp alien type-number tag-fixnum CMPI
-        "ok" get BNE
+        "simple-case" 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
+        "alloc" get B
+        "simple-case" resolve-label
+        displacement' displacement MR
+        base' base MR
+        "alloc" resolve-label
         ! Store underlying-alien slot
         base' dst 1 alien@ STW
         ! Store offset