]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/compiler/cfg/gvn/expressions/expressions.factor
factor: trim using lists
[factor.git] / extra / compiler / cfg / gvn / expressions / expressions.factor
index e87fe66d891c775f6512536d42cc99c587bf5bd8..b2985cdc7dc0c9b7938773b6f7094b5ad6c40bf9 100644 (file)
@@ -1,8 +1,9 @@
-! Copyright (C) 2008, 2010 Slava Pestov.
+! Copyright (C) 2008, 2010 Slava Pestov, 2011 Alex Vondrak.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: assocs accessors arrays classes classes.algebra
-combinators fry generic.parser kernel math namespaces
+USING: assocs accessors arrays classes.algebra
+combinators generic.parser kernel math namespaces
 quotations sequences slots words make sets
+compiler.cfg
 compiler.cfg.instructions
 compiler.cfg.instructions.syntax
 compiler.cfg.gvn.graph ;
@@ -28,8 +29,8 @@ GENERIC: >expr ( insn -- expr )
 : narray-quot ( length -- quot )
     [
         [ , [ f <array> ] % ]
-        [ 
-            dup iota [
+        [
+            dup <iota> [
                 - 1 - , [ swap [ set-array-nth ] keep ] %
             ] with each
         ] bi
@@ -84,5 +85,10 @@ M: ##load-integer >expr val>> <integer-expr> ;
 
 M: ##load-reference >expr obj>> <reference-expr> ;
 
+! TODO experiment with sorting, in case that identifies more
+! phi equivalences
+
 M: ##phi >expr
-    inputs>> values [ vreg>vn ] map \ ##phi prefix ;
+    inputs>> values [ vreg>vn ] map
+    basic-block get number>> prefix
+    ##phi prefix ;