]> gitweb.factorcode.org Git - factor.git/blob - unfinished/compiler/cfg/vn/propagate/propagate.factor
ogg plays but 1) sound is broken and 2) it doesn't recognize EOF anymore, so it hangs...
[factor.git] / unfinished / compiler / cfg / vn / propagate / propagate.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: namespaces assocs sequences kernel accessors
4 compiler.vops
5 compiler.cfg.vn.graph ;
6 IN: compiler.cfg.vn.propagate
7
8 ! If two vregs compute the same value, replace references to
9 ! the latter with the former.
10
11 : resolve ( vreg -- vreg' ) vreg>vn vn>vreg ;
12
13 GENERIC: propogate ( insn -- insn )
14
15 M: effect-op propogate
16     [ resolve ] change-in ;
17
18 M: unary-op propogate
19     [ resolve ] change-in ;
20
21 M: binary-op propogate
22     [ resolve ] change-in1
23     [ resolve ] change-in2 ;
24
25 M: %phi propogate
26     [ [ resolve ] map ] change-in ;
27
28 M: %%slot propogate
29     [ resolve ] change-obj
30     [ resolve ] change-slot ;
31
32 M: %%set-slot propogate
33     call-next-method
34     [ resolve ] change-obj
35     [ resolve ] change-slot ;
36
37 M: %store propogate
38     call-next-method
39     [ resolve ] change-addr ;
40
41 M: nullary-op propogate ;
42
43 M: flushable-op propogate ;