2009-05-26 20:31:19 -04:00
|
|
|
! Copyright (C) 2008, 2009 Slava Pestov.
|
2008-10-22 19:41:37 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-05-26 20:31:19 -04:00
|
|
|
USING: kernel sequences accessors combinators
|
2008-11-03 00:09:31 -05:00
|
|
|
compiler.cfg.predecessors
|
|
|
|
compiler.cfg.useless-blocks
|
2008-10-22 22:59:07 -04:00
|
|
|
compiler.cfg.height
|
2009-05-26 20:31:19 -04:00
|
|
|
compiler.cfg.stack-analysis
|
2008-10-22 22:59:07 -04:00
|
|
|
compiler.cfg.alias-analysis
|
|
|
|
compiler.cfg.value-numbering
|
2009-05-26 20:31:19 -04:00
|
|
|
compiler.cfg.dce
|
|
|
|
compiler.cfg.write-barrier
|
|
|
|
compiler.cfg.liveness
|
|
|
|
compiler.cfg.rpo ;
|
2008-10-22 19:41:37 -04:00
|
|
|
IN: compiler.cfg.optimizer
|
|
|
|
|
2009-05-26 20:31:19 -04:00
|
|
|
: optimize-cfg ( cfg -- cfg )
|
2008-10-22 19:41:37 -04:00
|
|
|
[
|
2009-05-26 20:31:19 -04:00
|
|
|
[ compute-predecessors ]
|
|
|
|
[ delete-useless-blocks ]
|
|
|
|
[ delete-useless-conditionals ] tri
|
|
|
|
] [
|
|
|
|
reverse-post-order
|
|
|
|
{
|
|
|
|
[ compute-liveness ]
|
|
|
|
[ normalize-height ]
|
|
|
|
[ stack-analysis ]
|
|
|
|
[ alias-analysis ]
|
|
|
|
[ value-numbering ]
|
|
|
|
[ eliminate-dead-code ]
|
|
|
|
[ eliminate-write-barriers ]
|
|
|
|
} cleave
|
|
|
|
] [ ] tri ;
|