compiler.cfg.*: new utility word apply-passes to improve the looks of long cleave's where each quotation only contains one word
parent
e371327ec4
commit
c85175c10c
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
Loading…
Reference in New Issue