FROM: compiler => enable-optimizer ;
IN: bootstrap.compiler
+"profile-compiler" get [
+ "bootstrap.compiler.timing" require
+] when
+
! Don't bring this in when deploying, since it will store a
! reference to 'eval' in a global variable
"deploy-vocab" get "staging" get or [
--- /dev/null
+! Copyright (C) 2009 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors compiler.cfg.builder compiler.cfg.linear-scan
+compiler.cfg.liveness compiler.cfg.mr compiler.cfg.optimizer
+compiler.cfg.stacks.finalize compiler.cfg.stacks.global
+compiler.codegen compiler.tree.builder compiler.tree.optimizer
+kernel make sequences tools.annotations tools.crossref ;
+IN: bootstrap.compiler.timing
+
+: passes ( word -- seq )
+ def>> uses [ vocabulary>> "compiler." head? ] filter ;
+
+: high-level-passes ( -- seq ) \ optimize-tree passes ;
+
+: low-level-passes ( -- seq ) \ optimize-cfg passes ;
+
+: machine-passes ( -- seq ) \ build-mr passes ;
+
+: linear-scan-passes ( -- seq ) \ (linear-scan) passes ;
+
+: all-passes ( -- seq )
+ [
+ \ build-tree ,
+ \ optimize-tree ,
+ high-level-passes %
+ \ build-cfg ,
+ \ compute-global-sets ,
+ \ finalize-stack-shuffling ,
+ \ optimize-cfg ,
+ low-level-passes %
+ \ compute-live-sets ,
+ \ build-mr ,
+ machine-passes %
+ linear-scan-passes %
+ \ generate ,
+ ] { } make ;
+
+all-passes [ [ reset ] [ add-timing ] bi ] each
\ No newline at end of file