]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/tree/optimizer/optimizer.factor
Switch to https urls
[factor.git] / basis / compiler / tree / optimizer / optimizer.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: kernel namespaces
4 compiler.tree.recursive
5 compiler.tree.normalization
6 compiler.tree.propagation
7 compiler.tree.cleanup
8 compiler.tree.escape-analysis
9 compiler.tree.escape-analysis.check
10 compiler.tree.tuple-unboxing
11 compiler.tree.identities
12 compiler.tree.def-use
13 compiler.tree.dead-code
14 compiler.tree.modular-arithmetic
15 compiler.tree.finalization
16 compiler.tree.checker ;
17 IN: compiler.tree.optimizer
18
19 SYMBOL: check-optimizer?
20
21 : ?check ( nodes -- nodes' )
22     check-optimizer? get [
23         dup check-nodes
24     ] when ;
25
26 : optimize-tree ( nodes -- nodes' )
27     [
28         analyze-recursive
29         normalize
30         propagate
31         cleanup-tree
32         dup run-escape-analysis? [
33             escape-analysis
34             unbox-tuples
35         ] when
36         apply-identities
37         compute-def-use
38         remove-dead-code
39         ?check
40         compute-def-use
41         optimize-modular-arithmetic
42         finalize
43     ] with-scope ;