1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel compiler.vops compiler.cfg.vn.graph
4 compiler.cfg.vn.expressions ;
5 IN: compiler.cfg.vn.constant-fold
7 GENERIC: constant-fold ( insn -- insn' )
11 : expr>insn ( out constant-expr -- constant-op )
12 [ value>> ] [ op>> ] bi new swap >>value swap >>out ;
14 M: pure-op constant-fold
17 dup constant-expr? [ expr>insn nip ] [ 2drop ] if ;