]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/compiler/cfg/stacks/local/local.factor
use reject instead of [ ... not ] filter.
[factor.git] / basis / compiler / cfg / stacks / local / local.factor
index f6d354dc623d68a5c79d5bffa9e56461f4b07d7a..f26bf76654b998527f368bdc1854c87502b41224 100644 (file)
@@ -24,14 +24,11 @@ IN: compiler.cfg.stacks.local
 
 : height-state>insns ( state -- insns )
     [ second ] map { ds-loc rs-loc } [ new swap >>n ] 2map
-    [ n>> 0 = not ] filter [ ##inc new swap >>loc ] map ;
+    [ n>> 0 = ] reject [ ##inc new swap >>loc ] map ;
 
 : translate-local-loc ( loc state -- loc' )
     [ clone ] dip over >loc< 0 1 ? rot nth first - >>n ;
 
-: untranslate-local-loc ( loc state -- loc' )
-    [ clone ] dip over >loc< 0 1 ? rot nth first + >>n ;
-
 : clone-height-state ( state -- state' )
     [ clone ] map ;
 
@@ -59,17 +56,10 @@ SYMBOLS: local-peek-set replaces ;
 : replaces>copy-insns ( replaces -- insns )
     [ [ loc>vreg ] dip ] assoc-map parallel-copy ;
 
-: replaces>replace-insns ( replaces height-state -- insns )
-    [ keys ] dip
-    '[ [ loc>vreg ] [ _ untranslate-local-loc ] bi f ##replace boa ] map
-    [ loc>> n>> 0 >= ] filter ;
-
 : changes>insns ( replaces height-state -- insns )
-    [ drop replaces>copy-insns ]
-    [ nip height-state>insns ]
-    [ replaces>replace-insns ] 2tri 3append ;
+    [ replaces>copy-insns ] [ height-state>insns ] bi* append ;
 
-: emit-changes ( replaces height-state -- )
+: emit-changes ( replaces state -- )
     building get pop -rot changes>insns % , ;
 
 : peek-loc ( loc -- vreg )
@@ -80,7 +70,7 @@ SYMBOLS: local-peek-set replaces ;
     height-state get translate-local-loc replaces get set-at ;
 
 : compute-local-kill-set ( basic-block -- set )
-    [ rs-heights get at ] [ ds-heights get at ] bi
+    [ ds-heights get at ] [ rs-heights get at ] bi
     height-state get local-kill-set ;
 
 : begin-local-analysis ( basic-block -- )