! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: sets kernel namespaces assocs accessors sequences grouping
-combinators fry compiler.cfg.def-use compiler.cfg.rpo
+fry compiler.cfg.def-use compiler.cfg.rpo
compiler.cfg.renaming compiler.cfg.instructions
-compiler.cfg.predecessors ;
+compiler.cfg.predecessors compiler.cfg.utilities ;
FROM: namespaces => set ;
IN: compiler.cfg.copy-prop
: copy-propagation ( cfg -- )
{
- [ needs-predecessors ]
- [ collect-copies ]
- [ rename-copies ]
- [ predecessors-changed ]
- } cleave ;
+ needs-predecessors
+ collect-copies
+ rename-copies
+ predecessors-changed
+ } apply-passes ;
! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: compiler.cfg.tco
-compiler.cfg.useless-conditionals
-compiler.cfg.branch-splitting
+USING:
+compiler.cfg.alias-analysis
compiler.cfg.block-joining
+compiler.cfg.branch-splitting
+compiler.cfg.copy-prop
+compiler.cfg.dce
compiler.cfg.height
compiler.cfg.ssa.construction
-compiler.cfg.alias-analysis
+compiler.cfg.tco
+compiler.cfg.useless-conditionals
+compiler.cfg.utilities
compiler.cfg.value-numbering
-compiler.cfg.copy-prop
-compiler.cfg.dce
kernel sequences ;
IN: compiler.cfg.optimizer
value-numbering
copy-propagation
eliminate-dead-code
- } [ execute( x -- ) ] with each ;
+ } apply-passes ;
! Copyright (C) 2009, 2010 Slava Pestov
! See http://factorcode.org/license.txt for BSD license.
-USING: combinators
+USING:
compiler.cfg
compiler.cfg.registers
compiler.cfg.predecessors
compiler.cfg.representations.rewrite
compiler.cfg.representations.peephole
compiler.cfg.representations.selection
-compiler.cfg.representations.coalescing ;
+compiler.cfg.representations.coalescing
+compiler.cfg.utilities
+kernel ;
IN: compiler.cfg.representations
! Virtual register representation selection. This is where
: select-representations ( cfg -- cfg' )
needs-loops
- {
- [ needs-predecessors ]
- [ compute-components ]
- [ compute-possibilities ]
- [ compute-representations ]
- [ insert-conversions ]
- [ ]
- } cleave ;
+ dup {
+ needs-predecessors
+ compute-components
+ compute-possibilities
+ compute-representations
+ insert-conversions
+ } apply-passes ;
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays assocs bit-arrays bit-sets fry
-hashtables hints kernel locals math namespaces sequences sets
-combinators compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
+USING: accessors arrays assocs bit-arrays bit-sets combinators compiler.cfg
+compiler.cfg.dominance compiler.cfg.rpo compiler.cfg.utilities fry
+hashtables hints kernel locals math namespaces sequences sets ;
FROM: namespaces => set ;
FROM: assocs => change-at ;
IN: compiler.cfg.ssa.construction.tdmsc
: compute-merge-sets ( cfg -- )
{
- [ needs-dominance ]
- [ compute-levels ]
- [ init-merge-sets ]
- [ compute-merge-set-loop ]
- } cleave ;
+ needs-dominance
+ compute-levels
+ init-merge-sets
+ compute-merge-set-loop
+ } apply-passes ;
: merge-set ( bbs -- bbs' )
(merge-set) [ members ] dip nths ;
: <copy> ( dst src -- insn )
any-rep ##copy new-insn ;
+
+: apply-passes ( obj passes -- )
+ [ execute( x -- ) ] with each ;
: value-numbering ( cfg -- cfg )
dup {
- [ needs-predecessors ]
- [ determine-value-numbers ]
- [ eliminate-common-subexpressions ]
- [ cfg-changed ]
- [ predecessors-changed ]
- } cleave ;
+ needs-predecessors
+ determine-value-numbers
+ eliminate-common-subexpressions
+ cfg-changed
+ predecessors-changed
+ } apply-passes ;