]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.build-stack-frame: some cleanup.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 12 Dec 2014 19:59:23 +0000 (11:59 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 12 Dec 2014 19:59:23 +0000 (11:59 -0800)
basis/compiler/cfg/build-stack-frame/build-stack-frame-docs.factor
basis/compiler/cfg/build-stack-frame/build-stack-frame.factor

index 36036a1f63aad9cc45ebc816c877c53133d20fa0..0c45b68201386a39c6999998c88ce6f9a3f19001 100644 (file)
@@ -16,8 +16,4 @@ HELP: compute-stack-frame
 { $description "Initializes a stack frame for a cfg, if it needs one." }
 { $see-also frame-required? } ;
 
-HELP: finalize-stack-frame
-{ $values { "stack-frame" stack-frame } }
-{ $description "Calculates the " { $slot "allot-area-base" } ", " { $slot "spill-area-base" } " and " { $slot "total-size" } " slots of a stack frame." } ;
-
 ABOUT: "compiler.cfg.build-stack-frame"
index 33247b973fa140d77d75b4ae0ccd5c5cfe3eda6e..6b7eb4546ee8a114ca2ba8b650c3a218c921a93d 100644 (file)
@@ -48,19 +48,24 @@ M: ##integer>float compute-stack-frame*
 
 M: insn compute-stack-frame* drop ;
 
-: finalize-stack-frame ( stack-frame -- )
-    dup [ params>> ] [ allot-area-align>> ] bi align >>allot-area-base
-    dup [ [ allot-area-base>> ] [ allot-area-size>> ] bi + ] [ spill-area-align>> ] bi align >>spill-area-base
-    dup stack-frame-size >>total-size drop ;
+: calculate-allot-area-base ( stack-frame -- n )
+    [ params>> ] [ allot-area-align>> ] bi align ;
+
+: calculate-spill-area-base ( stack-frame -- n )
+    [ allot-area-base>> ]
+    [ allot-area-size>> + ]
+    [ spill-area-align>> ] tri align ;
 
 : <stack-frame> ( cfg -- stack-frame )
-    [ stack-frame new ] dip
-    [ spill-area-size>> >>spill-area-size ]
-    [ spill-area-align>> >>spill-area-align ] bi
-    allot-area-size get >>allot-area-size
-    allot-area-align get >>allot-area-align
-    param-area-size get >>params
-    dup finalize-stack-frame ;
+    stack-frame new
+        over spill-area-size>> >>spill-area-size
+        swap spill-area-align>> >>spill-area-align
+        allot-area-size get >>allot-area-size
+        allot-area-align get >>allot-area-align
+        param-area-size get >>params
+        dup calculate-allot-area-base >>allot-area-base
+        dup calculate-spill-area-base >>spill-area-base
+        dup stack-frame-size >>total-size ;
 
 : compute-stack-frame ( cfg -- stack-frame/f )
     [ [ instructions>> [ compute-stack-frame* ] each ] each-basic-block ]