]> gitweb.factorcode.org Git - factor.git/commitdiff
compiler.cfg.gvn.alien: clean up destructive rewrites
authorAlex Vondrak <ajvondrak@csupomona.edu>
Sat, 18 Jun 2011 23:40:45 +0000 (16:40 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 12 Sep 2012 22:14:08 +0000 (15:14 -0700)
extra/compiler/cfg/gvn/alien/alien.factor
extra/compiler/cfg/gvn/gvn.factor

index a95a959e1debe42f23e4445c72960be11ef716e3..7b7e235dcc2791a6cd7eb131d4eecf30d552406e 100644 (file)
@@ -52,7 +52,7 @@ M: ##unbox-alien rewrite rewrite-unbox-any-c-ptr ;
     base>> vreg>insn ##add-imm? ;
 
 : fuse-base-offset ( insn -- insn' )
-    dup base>> vreg>insn
+    clone dup base>> vreg>insn
     [ src1>> ] [ src2>> ] bi
     [ >>base ] [ '[ _ + ] change-offset ] bi* ;
 
@@ -62,7 +62,7 @@ M: ##unbox-alien rewrite rewrite-unbox-any-c-ptr ;
     { [ scale>> 0 = ] [ displacement>> vreg>insn ##add-imm? ] } 1&& ;
 
 : fuse-displacement-offset ( insn -- insn' )
-    dup displacement>> vreg>insn
+    clone dup displacement>> vreg>insn
     [ src1>> ] [ src2>> ] bi
     [ >>displacement ] [ '[ _ + ] change-offset ] bi* ;
 
@@ -104,7 +104,7 @@ M: ##store-memory-imm new-alien-insn drop \ ##store-memory new-insn ;
     { [ scale>> 0 = ] [ displacement>> vreg>insn scale-insn? ] } 1&& ;
 
 : fuse-scale ( insn -- insn' )
-    dup displacement>> vreg>insn
+    clone dup displacement>> vreg>insn
     [ src1>> ] [ src2>> ] bi
     [ >>displacement ] [ >>scale ] bi* ;
 
index ef1f2f0cd808096003158484b115432332190573..685de8bd7ad371c5e02b443a8cc484d778f55bd4 100644 (file)
@@ -49,10 +49,6 @@ M: array process-instruction
 : value-numbering-step ( insns -- insns' )
     [ process-instruction ] map flatten ;
 
-! FIXME there's going to be trouble with certain rewrites that
-! modify the cfg / instructions destructively; namely those in
-! alien.factor
-
 : value-numbering-iteration ( cfg -- )
     clear-exprs
     [ value-numbering-step drop ] simple-analysis ;