]> gitweb.factorcode.org Git - factor.git/commitdiff
cpu.ppc: non-optimizing compiler backend fixes
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 1 Apr 2010 04:21:41 +0000 (00:21 -0400)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 1 Apr 2010 04:21:41 +0000 (00:21 -0400)
basis/cpu/ppc/bootstrap.factor

index 53edcd427dcd476dd06b3a595119e4ee34c22ce6..83be0150d87d1dea5c02f0b790b1df5c8995d5eb 100644 (file)
@@ -98,7 +98,7 @@ CONSTANT: nv-reg 17
     2 vm-reg vm-context-offset STW\r
 \r
     ! Save C callstack pointer\r
-    2 context-callstack-save-offset 1 STW\r
+    1 2 context-callstack-save-offset STW\r
 \r
     ! Load Factor callstack pointer\r
     1 2 context-callstack-bottom-offset LWZ\r
@@ -108,6 +108,9 @@ CONSTANT: nv-reg 17
     2 MTLR\r
     BLRL\r
 \r
+    ! Load VM again, pointlessly\r
+    0 vm-reg LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel\r
+\r
     ! Load C callstack pointer\r
     2 vm-reg vm-context-offset LWZ\r
     1 2 context-callstack-save-offset LWZ\r
@@ -141,7 +144,6 @@ CONSTANT: nv-reg 17
     rs-reg ctx-reg context-retainstack-offset STW ;\r
 \r
 : jit-restore-context ( -- )\r
-    jit-load-context\r
     ds-reg ctx-reg context-datastack-offset LWZ\r
     rs-reg ctx-reg context-retainstack-offset LWZ ;\r
 \r
@@ -317,6 +319,7 @@ CONSTANT: nv-reg 17
     3 6 MR\r
     4 vm-reg MR\r
     "inline_cache_miss" jit-call\r
+    jit-load-context\r
     jit-restore-context ;\r
 \r
 [ jit-load-return-address jit-inline-cache-miss ]\r
@@ -394,9 +397,11 @@ CONSTANT: nv-reg 17
     3 vm-reg MR\r
     "begin_callback" jit-call\r
 \r
+    jit-load-context\r
     jit-restore-context\r
 \r
     ! Call quotation\r
+    3 nv-reg MR\r
     jit-call-quot\r
 \r
     jit-save-context\r
@@ -414,6 +419,7 @@ CONSTANT: nv-reg 17
     0 vm-reg LOAD32 0 rc-absolute-ppc-2/2 jit-vm\r
 \r
     ! Load ds and rs registers\r
+    jit-load-context\r
     jit-restore-context\r
 \r
     ! We have changed the stack; load return address again\r
@@ -755,33 +761,34 @@ CONSTANT: nv-reg 17
 : jit-pop-context-and-param ( -- )\r
     3 ds-reg 0 LWZ\r
     3 3 alien-offset LWZ\r
-    4 ds-reg -8 LWZ\r
-    ds-reg ds-reg 16 SUBI ;\r
+    4 ds-reg -4 LWZ\r
+    ds-reg ds-reg 8 SUBI ;\r
 \r
 : jit-push-param ( -- )\r
-    ds-reg ds-reg 8 ADDI\r
+    ds-reg ds-reg 4 ADDI\r
     4 ds-reg 0 STW ;\r
 \r
 : jit-set-context ( -- )\r
     jit-pop-context-and-param\r
-    4 jit-switch-context\r
+    3 jit-switch-context\r
     jit-push-param ;\r
 \r
 [ jit-set-context ] \ (set-context) define-sub-primitive\r
 \r
 : jit-pop-quot-and-param ( -- )\r
     3 ds-reg 0 LWZ\r
-    4 ds-reg -8 LWZ\r
-    ds-reg ds-reg 16 SUBI ;\r
+    4 ds-reg -4 LWZ\r
+    ds-reg ds-reg 8 SUBI ;\r
 \r
 : jit-start-context ( -- )\r
     ! Create the new context in return-reg\r
     3 vm-reg MR\r
     "new_context" jit-call\r
+    6 3 MR\r
 \r
     jit-pop-quot-and-param\r
 \r
-    3 jit-switch-context\r
+    6 jit-switch-context\r
 \r
     jit-push-param\r
 \r