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.
|
! 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 ;
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
|
@ -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 ;
|
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
Loading…
Reference in New Issue