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.
! 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 ;

View File

@ -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 ;

View File

@ -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 ;

View File

@ -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 ;

View File

@ -83,3 +83,6 @@ IN: compiler.cfg.utilities
: <copy> ( dst src -- 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 )
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 ;