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

31 lines
791 B
Factor

! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors kernel math namespaces assocs ;
IN: compiler.cfg.value-numbering.graph
SYMBOL: input-expr-counter
! assoc mapping vregs to value numbers
! this is the identity on canonical representatives
SYMBOL: vregs>vns
! assoc mapping expressions to value numbers
SYMBOL: exprs>vns
! assoc mapping value numbers to instructions
SYMBOL: vns>insns
: vn>insn ( vn -- insn ) vns>insns get at ;
: vreg>vn ( vreg -- vn ) vregs>vns get [ ] cache ;
: set-vn ( vn vreg -- ) vregs>vns get set-at ;
: vreg>insn ( vreg -- insn ) vreg>vn vn>insn ;
: init-value-graph ( -- )
0 input-expr-counter set
H{ } clone vregs>vns set
H{ } clone exprs>vns set
H{ } clone vns>insns set ;