]> gitweb.factorcode.org Git - factor.git/commitdiff
cpu.x86.32: fix 32-bit bootstrap
authorSlava Pestov <slava@factorcode.org>
Tue, 3 Aug 2010 00:51:29 +0000 (20:51 -0400)
committerSlava Pestov <slava@factorcode.org>
Tue, 3 Aug 2010 00:51:29 +0000 (20:51 -0400)
basis/cpu/x86/32/bootstrap.factor

index 59012f9a9a96a8e7d36216648bca0ccc5203cd3f..d6f1618f7072c41d24d1ccffe107cd1e79869f33 100644 (file)
@@ -292,6 +292,15 @@ IN: bootstrap.x86
 
 [ jit-set-context ] \ (set-context) define-sub-primitive
 
+: jit-save-quot-and-param ( -- )
+    EDX ds-reg MOV
+    ds-reg 8 SUB ;
+
+: jit-push-param ( -- )
+    EAX EDX -4 [+] MOV
+    ds-reg 4 ADD
+    ds-reg [] EAX MOV ;
+
 : jit-start-context ( -- )
     ! Create the new context in return-reg
     jit-load-vm
@@ -299,17 +308,12 @@ IN: bootstrap.x86
     ESP [] vm-reg MOV
     "new_context" jit-call
 
-    ! Save pointer to quotation and parameter
-    EDX ds-reg MOV
-    ds-reg 8 SUB
+    jit-save-quot-and-param
 
     ! Make the new context active
     EAX jit-switch-context
 
-    ! Push parameter
-    EAX EDX -4 [+] MOV
-    ds-reg 4 ADD
-    ds-reg [] EAX MOV
+    jit-push-param
 
     ! Windows-specific setup
     jit-install-seh
@@ -342,9 +346,11 @@ IN: bootstrap.x86
     ESP 4 [+] ctx-reg MOV
     "reset_context" jit-call
 
-    jit-pop-quot-and-param
+    jit-save-quot-and-param
     ctx-reg jit-switch-context
     jit-push-param
+
+    EAX EDX [] MOV
     jit-jump-quot ;
 
 [