]> gitweb.factorcode.org Git - factor.git/commitdiff
cpu.x86.32: fix magic stack frame handling
authorSlava Pestov <slava@shill.local>
Sat, 17 Oct 2009 02:07:09 +0000 (21:07 -0500)
committerSlava Pestov <slava@shill.local>
Sat, 17 Oct 2009 02:07:09 +0000 (21:07 -0500)
basis/cpu/x86/32/32.factor

index ce73b4961ee865311cbb92084ce531f6db23059c..d0167121499b55faa0d22d3a0c7c62a46fc39edb 100755 (executable)
@@ -265,20 +265,19 @@ M: x86.32 %unnest-stacks ( -- )
     ] with-aligned-stack ;
 
 M: x86.32 %prepare-alien-indirect ( -- )
-    push-vm-ptr "unbox_alien" f %alien-invoke
-    temp-reg POP
+    4 [
+        push-vm-ptr
+        "unbox_alien" f %alien-invoke
+    ] with-aligned-stack
     EBP EAX MOV ;
 
 M: x86.32 %alien-indirect ( -- )
     EBP CALL ;
 
 M: x86.32 %alien-callback ( quot -- )
-    4 [
-        EAX swap %load-reference
-        EAX PUSH
-        param-reg-2 %mov-vm-ptr
-        "c_to_factor" f %alien-invoke
-    ] with-aligned-stack ;
+    param-reg-1 swap %load-reference
+    param-reg-2 %mov-vm-ptr
+    "c_to_factor" f %alien-invoke ;
 
 M: x86.32 %callback-value ( ctype -- )
     ! Align C stack