]> gitweb.factorcode.org Git - factor.git/blob - unfinished/compiler/cfg/vn/vn.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 / vn.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: namespaces assocs biassocs classes kernel math accessors
4 sorting sets sequences compiler.vops
5 compiler.cfg.vn.graph
6 compiler.cfg.vn.expressions
7 compiler.cfg.vn.simplify
8 compiler.cfg.vn.liveness
9 compiler.cfg.vn.constant-fold
10 compiler.cfg.vn.propagate ;
11 IN: compiler.cfg.vn
12
13 : insn>vn ( insn -- vn ) >expr simplify ; inline
14
15 GENERIC: make-value-node ( insn -- )
16 M: flushable-op make-value-node [ insn>vn ] [ out>> ] bi set-vn ;
17 M: effect-op make-value-node in>> live-vreg ;
18 M: %store make-value-node [ in>> live-vreg ] [ addr>> live-vreg ] bi ;
19 M: %%set-slot make-value-node [ in>> live-vreg ] [ obj>> live-vreg ] bi ;
20 M: nullary-op make-value-node drop ;
21
22 : init-value-numbering ( -- )
23     init-value-graph
24     init-expressions
25     init-liveness ;
26
27 : value-numbering ( instructions -- instructions )
28     init-value-numbering
29     [ [ make-value-node ] each ]
30     [ [ eliminate constant-fold propogate ] map ]
31     bi ;