diff --git a/basis/compiler/cfg/copy-prop/copy-prop.factor b/basis/compiler/cfg/copy-prop/copy-prop.factor index e65b25d4fa..2200831ee8 100644 --- a/basis/compiler/cfg/copy-prop/copy-prop.factor +++ b/basis/compiler/cfg/copy-prop/copy-prop.factor @@ -1,9 +1,9 @@ ! 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 @@ -121,8 +121,8 @@ USE: compiler.cfg : copy-propagation ( cfg -- ) { - [ needs-predecessors ] - [ collect-copies ] - [ rename-copies ] - [ predecessors-changed ] - } cleave ; + needs-predecessors + collect-copies + rename-copies + predecessors-changed + } apply-passes ; diff --git a/basis/compiler/cfg/optimizer/optimizer.factor b/basis/compiler/cfg/optimizer/optimizer.factor index 7138999772..a0a640c434 100644 --- a/basis/compiler/cfg/optimizer/optimizer.factor +++ b/basis/compiler/cfg/optimizer/optimizer.factor @@ -1,15 +1,17 @@ ! 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 -compiler.cfg.block-joining -compiler.cfg.height -compiler.cfg.ssa.construction +USING: compiler.cfg.alias-analysis -compiler.cfg.value-numbering +compiler.cfg.block-joining +compiler.cfg.branch-splitting compiler.cfg.copy-prop compiler.cfg.dce +compiler.cfg.height +compiler.cfg.ssa.construction +compiler.cfg.tco +compiler.cfg.useless-conditionals +compiler.cfg.utilities +compiler.cfg.value-numbering kernel sequences ; IN: compiler.cfg.optimizer @@ -25,4 +27,4 @@ IN: compiler.cfg.optimizer value-numbering copy-propagation eliminate-dead-code - } [ execute( x -- ) ] with each ; + } apply-passes ; diff --git a/basis/compiler/cfg/representations/representations.factor b/basis/compiler/cfg/representations/representations.factor index 2267aa1333..216d4943ce 100644 --- a/basis/compiler/cfg/representations/representations.factor +++ b/basis/compiler/cfg/representations/representations.factor @@ -1,6 +1,6 @@ ! 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 @@ -8,7 +8,9 @@ compiler.cfg.loop-detection 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 @@ -18,11 +20,10 @@ IN: compiler.cfg.representations : 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 ; diff --git a/basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor b/basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor index 5b9d5a9f9c..cc59908ed1 100644 --- a/basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor +++ b/basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor @@ -1,8 +1,8 @@ ! 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 @@ -82,11 +82,11 @@ PRIVATE> : 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 ; diff --git a/basis/compiler/cfg/utilities/utilities.factor b/basis/compiler/cfg/utilities/utilities.factor index 7354694ab6..993e15dd46 100644 --- a/basis/compiler/cfg/utilities/utilities.factor +++ b/basis/compiler/cfg/utilities/utilities.factor @@ -83,3 +83,6 @@ IN: compiler.cfg.utilities : ( dst src -- insn ) any-rep ##copy new-insn ; + +: apply-passes ( obj passes -- ) + [ execute( x -- ) ] with each ; diff --git a/extra/compiler/cfg/gvn/gvn.factor b/extra/compiler/cfg/gvn/gvn.factor index 959cd7930a..0877c6b0d4 100644 --- a/extra/compiler/cfg/gvn/gvn.factor +++ b/extra/compiler/cfg/gvn/gvn.factor @@ -120,9 +120,9 @@ M: insn gcse : 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 ;