]> gitweb.factorcode.org Git - factor.git/blob - core/optimizer/optimizer.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / core / optimizer / optimizer.factor
1 ! Copyright (C) 2006, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel namespaces optimizer.backend optimizer.def-use
4 optimizer.known-words optimizer.math optimizer.allot
5 optimizer.control optimizer.collect optimizer.inlining
6 inference.class ;
7 IN: optimizer
8
9 : optimize-1 ( node -- newnode ? )
10     [
11         H{ } clone class-substitutions set
12         H{ } clone literal-substitutions set
13         H{ } clone value-substitutions set
14
15         collect-label-infos
16         compute-def-use
17         kill-values
18         detect-loops
19         infer-classes
20
21         optimizer-changed off
22         optimize-nodes
23         optimizer-changed get
24     ] with-scope ;
25
26 : optimize ( node -- newnode )
27     optimize-1 [ optimize ] when ;