]> gitweb.factorcode.org Git - factor.git/commitdiff
cpu.x86: get rid of this extra-stack-space nonsense
authorSlava Pestov <slava@factorcode.org>
Mon, 17 May 2010 06:14:44 +0000 (02:14 -0400)
committerSlava Pestov <slava@factorcode.org>
Mon, 17 May 2010 06:14:44 +0000 (02:14 -0400)
basis/compiler/cfg/build-stack-frame/build-stack-frame.factor
basis/compiler/cfg/builder/alien/alien.factor
basis/compiler/cfg/stack-frame/stack-frame.factor
basis/cpu/architecture/architecture.factor
basis/cpu/x86/32/32.factor
basis/cpu/x86/64/64.factor
basis/cpu/x86/x86.factor

index 100a14bfab08552585c10bf89b1a9bf94b7df9f7..8b17db756d644600d5b468100a96956ae2c9a2bb 100644 (file)
@@ -21,7 +21,7 @@ M: ##stack-frame compute-stack-frame*
 
 : vm-frame-required ( -- )
     frame-required
-    stack-frame new t >>calls-vm? request-stack-frame ;
+    stack-frame new vm-stack-space >>params request-stack-frame ;
 
 M: ##call-gc compute-stack-frame* drop vm-frame-required ;
 M: ##box compute-stack-frame* drop vm-frame-required ;
index e7da813fec414a1546502392240c7e86017c2f2b..0b22c4d157d69db6b0a7008b930d7dd0d0a85888 100644 (file)
@@ -96,8 +96,7 @@ M: array dlsym-valid? '[ _ dlsym ] any? ;
 : <alien-stack-frame> ( stack-size return -- stack-frame )
     stack-frame new
         swap return-size >>return
-        swap >>params
-        t >>calls-vm? ;
+        swap >>params ;
 
 : emit-stack-frame ( stack-size params -- )
     [ return>> ] [ abi>> ] bi
index 2fe0b3cd7384829d8d0a41d2e312ab0cc00c8fd4..f438cb9a7f29f42def6ef92d0fdf62bbc9a3ba5b 100644 (file)
@@ -9,8 +9,7 @@ TUPLE: stack-frame
 { params integer }
 { return integer }
 { spill-area-size integer }
-{ total-size integer }
-{ calls-vm? boolean } ;
+{ total-size integer } ;
 
 ! Stack frame utilities
 : return-offset ( -- offset )
@@ -28,5 +27,4 @@ TUPLE: stack-frame
         [ [ params>> ] bi@ max >>params ]
         [ [ return>> ] bi@ max >>return ]
         [ [ spill-area-size>> ] bi@ max >>spill-area-size ]
-        [ [ calls-vm?>> ] bi@ or >>calls-vm? ]
     } 2cleave ;
index d8d36ee1a85810346d5bb35934cd072a67f09fca..cc6079d060b221e1664a3e6810f163629e30d487 100644 (file)
@@ -215,6 +215,11 @@ HOOK: machine-registers cpu ( -- assoc )
 ! Callbacks are not allowed to clobber this
 HOOK: frame-reg cpu ( -- reg )
 
+! Parameter space to reserve in anything making VM calls
+HOOK: vm-stack-space cpu ( -- n )
+
+M: object vm-stack-space 0 ;
+
 ! Specifies if %slot, %set-slot and %write-barrier accept the
 ! 'scale' and 'tag' parameters, and if %load-memory and
 ! %store-memory work
index 5b56e251ac8ba1ac0431305996632ad37bc8c74b..72590846c762d34f0c9fbb99c2d07cea86113412 100755 (executable)
@@ -39,8 +39,6 @@ M: x86.32 %set-vm-field ( dst field -- )
 M: x86.32 %vm-field-ptr ( dst field -- )
     [ 0 MOV ] dip rc-absolute-cell rel-vm ;
 
-M: x86.32 extra-stack-space calls-vm?>> 16 0 ? ;
-
 M: x86.32 %mark-card
     drop HEX: ffffffff [+] card-mark <byte> MOV
     building get pop
@@ -71,6 +69,8 @@ M: x86.32 pic-tail-reg EDX ;
 
 M: x86.32 reserved-stack-space 0 ;
 
+M: x86.32 vm-stack-space 16 ;
+
 : save-vm-ptr ( n -- )
     stack@ 0 MOV 0 rc-absolute-cell rel-vm ;
 
index 73f32c3be3d3e953a356e8676f8706277e8549e1..2883d700286d0c77def26f65199684db53b99fe6 100644 (file)
@@ -31,8 +31,6 @@ M: x86.64 rs-reg R15 ;
 M: x86.64 stack-reg RSP ;
 M: x86.64 frame-reg RBP ;
 
-M: x86.64 extra-stack-space drop 0 ;
-
 M: x86.64 machine-registers
     {
         { int-regs { RAX RCX RDX RBX RBP RSI RDI R8 R9 R10 R11 R12 } }
index 52d51cc1d0c5ad4f361cd1b591a360de2b11c02d..949a0104af63280c7200ebd5e8c5027b18e2428a 100644 (file)
@@ -28,12 +28,9 @@ HOOK: stack-reg cpu ( -- reg )
 
 HOOK: reserved-stack-space cpu ( -- n )
 
-HOOK: extra-stack-space cpu ( stack-frame -- n )
-
 : stack@ ( n -- op ) stack-reg swap [+] ;
 
 : special-offset ( m -- n )
-    stack-frame get extra-stack-space +
     reserved-stack-space + ;
 
 : spill@ ( n -- op ) spill-offset special-offset stack@ ;
@@ -50,8 +47,7 @@ HOOK: extra-stack-space cpu ( stack-frame -- n )
 : align-stack ( n -- n' ) 16 align ;
 
 M: x86 stack-frame-size ( stack-frame -- i )
-    [ (stack-frame-size) ]
-    [ extra-stack-space ] bi +
+    (stack-frame-size)
     reserved-stack-space +
     3 cells +
     align-stack ;