compiler.cfg.*: new utility word apply-passes to improve the looks of long cleave's where each quotation only contains one word

db4
Björn Lindqvist 2014-12-10 23:40:45 +01:00
parent e371327ec4
commit c85175c10c
6 changed files with 45 additions and 39 deletions

View File

@ -1,9 +1,9 @@
! Copyright (C) 2008, 2010 Slava Pestov. ! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: sets kernel namespaces assocs accessors sequences grouping 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.renaming compiler.cfg.instructions
compiler.cfg.predecessors ; compiler.cfg.predecessors compiler.cfg.utilities ;
FROM: namespaces => set ; FROM: namespaces => set ;
IN: compiler.cfg.copy-prop IN: compiler.cfg.copy-prop
@ -121,8 +121,8 @@ USE: compiler.cfg
: copy-propagation ( cfg -- ) : copy-propagation ( cfg -- )
{ {
[ needs-predecessors ] needs-predecessors
[ collect-copies ] collect-copies
[ rename-copies ] rename-copies
[ predecessors-changed ] predecessors-changed
} cleave ; } apply-passes ;

View File

@ -1,15 +1,17 @@
! Copyright (C) 2008, 2010 Slava Pestov. ! Copyright (C) 2008, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: compiler.cfg.tco USING:
compiler.cfg.useless-conditionals
compiler.cfg.branch-splitting
compiler.cfg.block-joining
compiler.cfg.height
compiler.cfg.ssa.construction
compiler.cfg.alias-analysis compiler.cfg.alias-analysis
compiler.cfg.value-numbering compiler.cfg.block-joining
compiler.cfg.branch-splitting
compiler.cfg.copy-prop compiler.cfg.copy-prop
compiler.cfg.dce 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 ; kernel sequences ;
IN: compiler.cfg.optimizer IN: compiler.cfg.optimizer
@ -25,4 +27,4 @@ IN: compiler.cfg.optimizer
value-numbering value-numbering
copy-propagation copy-propagation
eliminate-dead-code eliminate-dead-code
} [ execute( x -- ) ] with each ; } apply-passes ;

View File

@ -1,6 +1,6 @@
! Copyright (C) 2009, 2010 Slava Pestov ! Copyright (C) 2009, 2010 Slava Pestov
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: combinators USING:
compiler.cfg compiler.cfg
compiler.cfg.registers compiler.cfg.registers
compiler.cfg.predecessors compiler.cfg.predecessors
@ -8,7 +8,9 @@ compiler.cfg.loop-detection
compiler.cfg.representations.rewrite compiler.cfg.representations.rewrite
compiler.cfg.representations.peephole compiler.cfg.representations.peephole
compiler.cfg.representations.selection compiler.cfg.representations.selection
compiler.cfg.representations.coalescing ; compiler.cfg.representations.coalescing
compiler.cfg.utilities
kernel ;
IN: compiler.cfg.representations IN: compiler.cfg.representations
! Virtual register representation selection. This is where ! Virtual register representation selection. This is where
@ -18,11 +20,10 @@ IN: compiler.cfg.representations
: select-representations ( cfg -- cfg' ) : select-representations ( cfg -- cfg' )
needs-loops needs-loops
{ dup {
[ needs-predecessors ] needs-predecessors
[ compute-components ] compute-components
[ compute-possibilities ] compute-possibilities
[ compute-representations ] compute-representations
[ insert-conversions ] insert-conversions
[ ] } apply-passes ;
} cleave ;

View File

@ -1,8 +1,8 @@
! Copyright (C) 2009 Slava Pestov. ! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs bit-arrays bit-sets fry USING: accessors arrays assocs bit-arrays bit-sets combinators compiler.cfg
hashtables hints kernel locals math namespaces sequences sets compiler.cfg.dominance compiler.cfg.rpo compiler.cfg.utilities fry
combinators compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ; hashtables hints kernel locals math namespaces sequences sets ;
FROM: namespaces => set ; FROM: namespaces => set ;
FROM: assocs => change-at ; FROM: assocs => change-at ;
IN: compiler.cfg.ssa.construction.tdmsc IN: compiler.cfg.ssa.construction.tdmsc
@ -82,11 +82,11 @@ PRIVATE>
: compute-merge-sets ( cfg -- ) : compute-merge-sets ( cfg -- )
{ {
[ needs-dominance ] needs-dominance
[ compute-levels ] compute-levels
[ init-merge-sets ] init-merge-sets
[ compute-merge-set-loop ] compute-merge-set-loop
} cleave ; } apply-passes ;
: merge-set ( bbs -- bbs' ) : merge-set ( bbs -- bbs' )
(merge-set) [ members ] dip nths ; (merge-set) [ members ] dip nths ;

View File

@ -83,3 +83,6 @@ IN: compiler.cfg.utilities
: <copy> ( dst src -- insn ) : <copy> ( dst src -- insn )
any-rep ##copy new-insn ; any-rep ##copy new-insn ;
: apply-passes ( obj passes -- )
[ execute( x -- ) ] with each ;

View File

@ -120,9 +120,9 @@ M: insn gcse
: value-numbering ( cfg -- cfg ) : value-numbering ( cfg -- cfg )
dup { dup {
[ needs-predecessors ] needs-predecessors
[ determine-value-numbers ] determine-value-numbers
[ eliminate-common-subexpressions ] eliminate-common-subexpressions
[ cfg-changed ] cfg-changed
[ predecessors-changed ] predecessors-changed
} cleave ; } apply-passes ;