]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/cpu/x86/x86.factor
make inline_gc regparm(3) and cleaned up %call-gc stack alignment
[factor.git] / basis / cpu / x86 / x86.factor
index 8585dfa697cea2d67c4447800838fb2f5faea915..25dca527f600732b756b2bcbade9dd8b58ba7bf7 100644 (file)
@@ -55,6 +55,7 @@ HOOK: temp-reg cpu ( -- reg )
 ! Fastcall calling convention
 HOOK: param-reg-1 cpu ( -- reg )
 HOOK: param-reg-2 cpu ( -- reg )
+HOOK: param-reg-3 cpu ( -- reg )
 
 HOOK: pic-tail-reg cpu ( -- reg )
 
@@ -832,8 +833,10 @@ M:: x86 %call-gc ( gc-root-count -- )
     param-reg-1 gc-root-base param@ LEA
     ! Pass number of roots as second parameter
     param-reg-2 gc-root-count MOV
+    ! Pass vm as third argument
+    param-reg-3 0 MOV rc-absolute-cell rt-vm rel-fixup
     ! Call GC
-    "inline_gc" %vm-invoke-3rd-arg ; 
+    "inline_gc" f %alien-invoke ; 
 
 M: x86 %alien-global ( dst symbol library -- )
     [ 0 MOV ] 2dip rc-absolute-cell rel-dlsym ;