]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.dominance: change needs-dominance effect from ( cfg -- cfg') to ( cfg...
authorBjörn Lindqvist <bjourne@gmail.com>
Wed, 10 Dec 2014 16:49:52 +0000 (17:49 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Thu, 11 Dec 2014 13:30:46 +0000 (14:30 +0100)
basis/compiler/cfg/dominance/dominance-tests.factor
basis/compiler/cfg/dominance/dominance.factor
basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor
basis/compiler/cfg/ssa/destruction/destruction.factor
basis/compiler/cfg/ssa/interference/live-ranges/live-ranges.factor

index 9e7d8271728d9235abb5ebf0d238897bba893522..fe1e80646384ada105d8a24073ed51db53073d42 100644 (file)
@@ -4,7 +4,7 @@ compiler.cfg.predecessors compiler.cfg.utilities ;
 IN: compiler.cfg.dominance.tests
 
 : test-dominance ( -- )
-    0 get block>cfg needs-dominance drop ;
+    0 get block>cfg needs-dominance ;
 
 ! Example with no back edges
 V{ } 0 test-bb
index 7a4f83ad2dca5b60e0d9ab9d63702a3595a3a9fa..8d8b868f3d0b82813cc6eb10f3b4ebde7469886a 100644 (file)
@@ -78,9 +78,10 @@ PRIVATE>
 
 PRIVATE>
 
-: needs-dominance ( cfg -- cfg' )
+: needs-dominance ( cfg -- )
     needs-predecessors
-    dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless ;
+    dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless
+    drop ;
 
 : dominates? ( bb1 bb2 -- ? )
     swap [ pre-of ] [ [ pre-of ] [ maxpre-of ] bi ] bi* between? ;
index a042ccac4adea1f5affa1ed67f81b907aeaa048d..5b9d5a9f9c9d30d37c5ea33268b5f671b017ced7 100644 (file)
@@ -2,7 +2,7 @@
 ! 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
-compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
+combinators compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
 FROM: namespaces => set ;
 FROM: assocs => change-at ;
 IN: compiler.cfg.ssa.construction.tdmsc
@@ -81,12 +81,12 @@ SYMBOLS: merge-sets levels again? ;
 PRIVATE>
 
 : compute-merge-sets ( cfg -- )
-    needs-dominance
-
-    [ compute-levels ]
-    [ init-merge-sets ]
-    [ compute-merge-set-loop ]
-    tri ;
+    {
+        [ needs-dominance ]
+        [ compute-levels ]
+        [ init-merge-sets ]
+        [ compute-merge-set-loop ]
+    } cleave ;
 
 : merge-set ( bbs -- bbs' )
      (merge-set) [ members ] dip nths ;
index 07c551552bfaa356dd1ccd547acdd24aa65ab028..c2ae09e8c91478ef880749407ecb992545a4be9d 100644 (file)
@@ -154,8 +154,7 @@ M: insn cleanup-insn , ;
 PRIVATE>
 
 : destruct-ssa ( cfg -- cfg' )
-    needs-dominance
-
+    dup needs-dominance
     dup construct-cssa
     dup compute-defs
     dup compute-insns
index 99e4bd76124ad87b3abbdec0a5845b3717e0d9a0..01f3467b0e27fd11eda98d99bf644b2317d46909 100644 (file)
@@ -54,11 +54,10 @@ SYMBOLS: def-indices kill-indices ;
 PRIVATE>
 
 : compute-live-ranges ( cfg -- )
-    needs-dominance
-
     H{ } clone def-indices set
     H{ } clone kill-indices set
-    [ compute-local-live-ranges ] simple-analysis ;
+    [ needs-dominance ]
+    [ [ compute-local-live-ranges ] simple-analysis ] bi ;
 
 : def-index ( vreg bb -- n )
     def-indices get at at ;