]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.*: new utility word apply-passes to improve the looks of long cleave...
authorBjörn Lindqvist <bjourne@gmail.com>
Wed, 10 Dec 2014 22:40:45 +0000 (23:40 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Thu, 11 Dec 2014 13:30:47 +0000 (14:30 +0100)
basis/compiler/cfg/copy-prop/copy-prop.factor
basis/compiler/cfg/optimizer/optimizer.factor
basis/compiler/cfg/representations/representations.factor
basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor
basis/compiler/cfg/utilities/utilities.factor
extra/compiler/cfg/gvn/gvn.factor

index e65b25d4fa42677a759fbf95353994118f838e9d..2200831ee8c3e90558304842c3740ef0af81e40f 100644 (file)
@@ -1,9 +1,9 @@
 ! Copyright (C) 2008, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: sets kernel namespaces assocs accessors sequences grouping
-combinators fry compiler.cfg.def-use compiler.cfg.rpo
+fry compiler.cfg.def-use compiler.cfg.rpo
 compiler.cfg.renaming compiler.cfg.instructions
-compiler.cfg.predecessors ;
+compiler.cfg.predecessors compiler.cfg.utilities ;
 FROM: namespaces => set ;
 IN: compiler.cfg.copy-prop
 
@@ -121,8 +121,8 @@ USE: compiler.cfg
 
 : copy-propagation ( cfg -- )
     {
-        [ needs-predecessors ]
-        [ collect-copies ]
-        [ rename-copies ]
-        [ predecessors-changed ]
-    } cleave ;
+        needs-predecessors
+        collect-copies
+        rename-copies
+        predecessors-changed
+    } apply-passes ;
index 7138999772105635693f82ce477de72e74f6f44d..a0a640c434d4317bdba2cfc93245fe6474a2cedb 100644 (file)
@@ -1,15 +1,17 @@
 ! Copyright (C) 2008, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: compiler.cfg.tco
-compiler.cfg.useless-conditionals
-compiler.cfg.branch-splitting
+USING:
+compiler.cfg.alias-analysis
 compiler.cfg.block-joining
+compiler.cfg.branch-splitting
+compiler.cfg.copy-prop
+compiler.cfg.dce
 compiler.cfg.height
 compiler.cfg.ssa.construction
-compiler.cfg.alias-analysis
+compiler.cfg.tco
+compiler.cfg.useless-conditionals
+compiler.cfg.utilities
 compiler.cfg.value-numbering
-compiler.cfg.copy-prop
-compiler.cfg.dce
 kernel sequences ;
 IN: compiler.cfg.optimizer
 
@@ -25,4 +27,4 @@ IN: compiler.cfg.optimizer
         value-numbering
         copy-propagation
         eliminate-dead-code
-    } [ execute( x -- ) ] with each ;
+    } apply-passes ;
index 2267aa1333aa58ec92eb084a2797d09ed04534fd..216d4943cedfdee12a9f8d74cbad0abbb4e13810 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2009, 2010 Slava Pestov
 ! See http://factorcode.org/license.txt for BSD license.
-USING: combinators
+USING:
 compiler.cfg
 compiler.cfg.registers
 compiler.cfg.predecessors
@@ -8,7 +8,9 @@ compiler.cfg.loop-detection
 compiler.cfg.representations.rewrite
 compiler.cfg.representations.peephole
 compiler.cfg.representations.selection
-compiler.cfg.representations.coalescing ;
+compiler.cfg.representations.coalescing
+compiler.cfg.utilities
+kernel ;
 IN: compiler.cfg.representations
 
 ! Virtual register representation selection. This is where
@@ -18,11 +20,10 @@ IN: compiler.cfg.representations
 
 : select-representations ( cfg -- cfg' )
     needs-loops
-    {
-        [ needs-predecessors ]
-        [ compute-components ]
-        [ compute-possibilities ]
-        [ compute-representations ]
-        [ insert-conversions ]
-        [ ]
-    } cleave ;
+    dup {
+        needs-predecessors
+        compute-components
+        compute-possibilities
+        compute-representations
+        insert-conversions
+    } apply-passes ;
index 5b9d5a9f9c9d30d37c5ea33268b5f671b017ced7..cc59908ed10a42f70f226402a5403b302b8020a5 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs bit-arrays bit-sets fry
-hashtables hints kernel locals math namespaces sequences sets
-combinators compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
+USING: accessors arrays assocs bit-arrays bit-sets combinators compiler.cfg
+compiler.cfg.dominance compiler.cfg.rpo compiler.cfg.utilities fry
+hashtables hints kernel locals math namespaces sequences sets ;
 FROM: namespaces => set ;
 FROM: assocs => change-at ;
 IN: compiler.cfg.ssa.construction.tdmsc
@@ -82,11 +82,11 @@ PRIVATE>
 
 : compute-merge-sets ( cfg -- )
     {
-        [ needs-dominance ]
-        [ compute-levels ]
-        [ init-merge-sets ]
-        [ compute-merge-set-loop ]
-    } cleave ;
+        needs-dominance
+        compute-levels
+        init-merge-sets
+        compute-merge-set-loop
+    } apply-passes ;
 
 : merge-set ( bbs -- bbs' )
      (merge-set) [ members ] dip nths ;
index 7354694ab6ab524d71fd1ed1f48240333834f695..993e15dd462c9d9452f6c1df52774c5a662895d3 100644 (file)
@@ -83,3 +83,6 @@ IN: compiler.cfg.utilities
 
 : <copy> ( dst src -- insn )
     any-rep ##copy new-insn ;
+
+: apply-passes ( obj passes -- )
+    [ execute( x -- ) ] with each ;
index 959cd7930a9ee76bdfda7470006e7da6b84447cd..0877c6b0d460614c338cc665258ca9fc3401158d 100644 (file)
@@ -120,9 +120,9 @@ M: insn gcse
 
 : value-numbering ( cfg -- cfg )
     dup {
-        [ needs-predecessors ]
-        [ determine-value-numbers ]
-        [ eliminate-common-subexpressions ]
-        [ cfg-changed ]
-        [ predecessors-changed ]
-    } cleave ;
+        needs-predecessors
+        determine-value-numbers
+        eliminate-common-subexpressions
+        cfg-changed
+        predecessors-changed
+    } apply-passes ;