2008-07-27 21:25:42 -04:00
|
|
|
! Copyright (C) 2008 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2008-09-08 20:02:24 -04:00
|
|
|
USING: kernel namespaces
|
2008-09-12 06:17:27 -04:00
|
|
|
compiler.tree.recursive
|
2008-09-08 20:02:24 -04:00
|
|
|
compiler.tree.normalization
|
2008-08-07 07:34:28 -04:00
|
|
|
compiler.tree.propagation
|
|
|
|
compiler.tree.cleanup
|
|
|
|
compiler.tree.escape-analysis
|
2008-12-06 12:17:19 -05:00
|
|
|
compiler.tree.escape-analysis.check
|
2008-08-07 07:34:28 -04:00
|
|
|
compiler.tree.tuple-unboxing
|
2008-09-12 09:18:44 -04:00
|
|
|
compiler.tree.identities
|
2008-08-07 07:34:28 -04:00
|
|
|
compiler.tree.def-use
|
|
|
|
compiler.tree.dead-code
|
2008-09-12 19:08:38 -04:00
|
|
|
compiler.tree.modular-arithmetic
|
2008-08-31 06:40:29 -04:00
|
|
|
compiler.tree.finalization
|
2008-08-15 00:35:19 -04:00
|
|
|
compiler.tree.checker ;
|
2008-07-27 21:25:42 -04:00
|
|
|
IN: compiler.tree.optimizer
|
|
|
|
|
2008-09-08 20:02:24 -04:00
|
|
|
SYMBOL: check-optimizer?
|
|
|
|
|
2009-04-20 05:21:00 -04:00
|
|
|
: ?check ( nodes -- nodes' )
|
|
|
|
check-optimizer? get [
|
|
|
|
compute-def-use
|
|
|
|
dup check-nodes
|
|
|
|
] when ;
|
|
|
|
|
2008-07-27 21:25:42 -04:00
|
|
|
: optimize-tree ( nodes -- nodes' )
|
2008-09-12 06:17:27 -04:00
|
|
|
analyze-recursive
|
2008-07-27 21:25:42 -04:00
|
|
|
normalize
|
|
|
|
propagate
|
|
|
|
cleanup
|
2008-12-06 12:17:19 -05:00
|
|
|
dup run-escape-analysis? [
|
|
|
|
escape-analysis
|
|
|
|
unbox-tuples
|
|
|
|
] when
|
2008-09-12 09:18:44 -04:00
|
|
|
apply-identities
|
2008-08-18 16:47:49 -04:00
|
|
|
compute-def-use
|
|
|
|
remove-dead-code
|
2009-04-20 05:21:00 -04:00
|
|
|
?check
|
2008-09-12 19:08:38 -04:00
|
|
|
compute-def-use
|
|
|
|
optimize-modular-arithmetic
|
2008-09-08 20:02:24 -04:00
|
|
|
finalize ;
|