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.
|
2014-12-13 19:10:21 -05:00
|
|
|
USING: assocs kernel namespaces ;
|
2008-10-19 02:10:21 -04:00
|
|
|
IN: compiler.cfg.value-numbering.graph
|
|
|
|
|
2010-04-24 06:06:16 -04:00
|
|
|
SYMBOL: input-expr-counter
|
|
|
|
|
2010-04-24 06:15:41 -04:00
|
|
|
! assoc mapping vregs to value numbers
|
|
|
|
! this is the identity on canonical representatives
|
|
|
|
SYMBOL: vregs>vns
|
2008-10-19 02:10:21 -04:00
|
|
|
|
2010-04-24 06:06:16 -04:00
|
|
|
! assoc mapping expressions to value numbers
|
2008-10-19 02:10:21 -04:00
|
|
|
SYMBOL: exprs>vns
|
|
|
|
|
2010-04-24 06:06:16 -04:00
|
|
|
! assoc mapping value numbers to instructions
|
|
|
|
SYMBOL: vns>insns
|
2009-07-22 04:08:28 -04:00
|
|
|
|
2010-04-24 06:06:16 -04:00
|
|
|
: vn>insn ( vn -- insn ) vns>insns get at ;
|
2009-07-22 04:08:28 -04:00
|
|
|
|
2010-04-24 06:15:41 -04:00
|
|
|
: vreg>vn ( vreg -- vn ) vregs>vns get [ ] cache ;
|
2008-10-19 02:10:21 -04:00
|
|
|
|
|
|
|
: set-vn ( vn vreg -- ) vregs>vns get set-at ;
|
|
|
|
|
2010-04-24 06:15:41 -04:00
|
|
|
: vreg>insn ( vreg -- insn ) vreg>vn vn>insn ;
|
2008-10-22 22:59:07 -04:00
|
|
|
|
2008-10-19 02:10:21 -04:00
|
|
|
: init-value-graph ( -- )
|
2009-09-02 07:22:37 -04:00
|
|
|
0 input-expr-counter set
|
2010-04-24 06:15:41 -04:00
|
|
|
H{ } clone vregs>vns set
|
2010-04-24 06:06:16 -04:00
|
|
|
H{ } clone exprs>vns set
|
|
|
|
H{ } clone vns>insns set ;
|