]> gitweb.factorcode.org Git - factor.git/blob - unfinished/compiler/cfg.bluesky/vn/graph/graph.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / unfinished / compiler / cfg.bluesky / vn / graph / graph.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel math namespaces assocs biassocs accessors
4 math.order prettyprint.backend parser ;
5 IN: compiler.cfg.vn.graph
6
7 TUPLE: vn n ;
8
9 SYMBOL: vn-counter
10
11 : next-vn ( -- vn ) vn-counter [ dup 1 + ] change vn boa ;
12
13 : VN: scan-word vn boa parsed ; parsing
14
15 M: vn <=> [ n>> ] compare ;
16
17 M: vn pprint* \ VN: pprint-word n>> pprint* ;
18
19 ! biassoc mapping expressions to value numbers
20 SYMBOL: exprs>vns
21
22 : expr>vn ( expr -- vn ) exprs>vns get [ drop next-vn ] cache ;
23
24 : vn>expr ( vn -- expr ) exprs>vns get value-at ;
25
26 SYMBOL: vregs>vns
27
28 : vreg>vn ( vreg -- vn ) vregs>vns get at ;
29
30 : vn>vreg ( vn -- vreg ) vregs>vns get value-at ;
31
32 : set-vn ( vn vreg -- ) vregs>vns get set-at ;
33
34 : init-value-graph ( -- )
35     0 vn-counter set
36     <bihash> exprs>vns set
37     <bihash> vregs>vns set ;