factor/basis/compiler/cfg/value-numbering/graph/graph.factor

39 lines
1018 B
Factor
Raw Normal View History

2010-04-21 03:08:52 -04:00
! Copyright (C) 2008, 2010 Slava Pestov.
2008-10-19 02:10:21 -04:00
! See http://factorcode.org/license.txt for BSD license.
2008-10-22 22:59:07 -04:00
USING: accessors kernel math namespaces assocs biassocs ;
2008-10-19 02:10:21 -04:00
IN: compiler.cfg.value-numbering.graph
! Value numbers are negative, to catch confusion with vregs
2008-10-19 02:10:21 -04:00
SYMBOL: vn-counter
SYMBOL: input-expr-counter
: next-vn ( -- vn ) vn-counter [ 1 - dup ] change ;
2008-10-19 02:10:21 -04:00
! assoc mapping expressions to value numbers
2008-10-19 02:10:21 -04:00
SYMBOL: exprs>vns
! assoc mapping value numbers to instructions
SYMBOL: vns>insns
: vn>insn ( vn -- insn ) vns>insns get at ;
! biassocs mapping vregs to value numbers, and value numbers to
! their primary vregs
2008-10-19 02:10:21 -04:00
SYMBOL: vregs>vns
: vreg>vn ( vreg -- vn ) vregs>vns get [ drop next-vn ] cache ;
2008-10-19 02:10:21 -04:00
: vn>vreg ( vn -- vreg ) vregs>vns get value-at ;
: set-vn ( vn vreg -- ) vregs>vns get set-at ;
: vreg>insn ( vreg -- insn ) vreg>vn vn>insn ; inline
2008-10-22 22:59:07 -04:00
2008-10-19 02:10:21 -04:00
: init-value-graph ( -- )
0 vn-counter set
0 input-expr-counter set
<bihash> vregs>vns set
H{ } clone exprs>vns set
H{ } clone vns>insns set ;