compiler.cfg.ssa.destruction: tweak in preparation for landing Dan's new SSA liveness analysis
parent
1e8d13c1f1
commit
b133649edd
|
@ -55,3 +55,7 @@ SYMBOL: work-list
|
||||||
H{ } clone live-outs set
|
H{ } clone live-outs set
|
||||||
dup post-order add-to-work-list
|
dup post-order add-to-work-list
|
||||||
work-list get [ liveness-step ] slurp-deque ;
|
work-list get [ liveness-step ] slurp-deque ;
|
||||||
|
|
||||||
|
: live-in? ( vreg bb -- ? ) live-in key? ;
|
||||||
|
|
||||||
|
: live-out? ( vreg bb -- ? ) live-out key? ;
|
|
@ -2,7 +2,7 @@
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors assocs fry kernel namespaces sequences math
|
USING: accessors assocs fry kernel namespaces sequences math
|
||||||
arrays compiler.cfg.def-use compiler.cfg.instructions
|
arrays compiler.cfg.def-use compiler.cfg.instructions
|
||||||
compiler.cfg.liveness compiler.cfg.rpo ;
|
compiler.cfg.liveness.ssa compiler.cfg.rpo ;
|
||||||
IN: compiler.cfg.ssa.destruction.live-ranges
|
IN: compiler.cfg.ssa.destruction.live-ranges
|
||||||
|
|
||||||
! Live ranges for interference testing
|
! Live ranges for interference testing
|
||||||
|
@ -52,9 +52,9 @@ PRIVATE>
|
||||||
ERROR: bad-kill-index vreg bb ;
|
ERROR: bad-kill-index vreg bb ;
|
||||||
|
|
||||||
: kill-index ( vreg bb -- n )
|
: kill-index ( vreg bb -- n )
|
||||||
2dup live-out key? [ 2drop 1/0. ] [
|
2dup live-out? [ 2drop 1/0. ] [
|
||||||
2dup kill-indices get at at* [ 2nip ] [
|
2dup kill-indices get at at* [ 2nip ] [
|
||||||
drop 2dup live-in key?
|
drop 2dup live-in?
|
||||||
[ bad-kill-index ] [ 2drop -1/0. ] if
|
[ bad-kill-index ] [ 2drop -1/0. ] if
|
||||||
] if
|
] if
|
||||||
] if ;
|
] if ;
|
||||||
|
|
|
@ -4,7 +4,7 @@ USING: accessors assocs fry kernel locals math math.order arrays
|
||||||
namespaces sequences sorting sets combinators combinators.short-circuit make
|
namespaces sequences sorting sets combinators combinators.short-circuit make
|
||||||
compiler.cfg.def-use
|
compiler.cfg.def-use
|
||||||
compiler.cfg.instructions
|
compiler.cfg.instructions
|
||||||
compiler.cfg.liveness
|
compiler.cfg.liveness.ssa
|
||||||
compiler.cfg.dominance
|
compiler.cfg.dominance
|
||||||
compiler.cfg.ssa.destruction.state
|
compiler.cfg.ssa.destruction.state
|
||||||
compiler.cfg.ssa.destruction.forest
|
compiler.cfg.ssa.destruction.forest
|
||||||
|
@ -19,13 +19,13 @@ IN: compiler.cfg.ssa.destruction.process-blocks
|
||||||
SYMBOLS: phi-union unioned-blocks ;
|
SYMBOLS: phi-union unioned-blocks ;
|
||||||
|
|
||||||
:: operand-live-into-phi-node's-block? ( bb src dst -- ? )
|
:: operand-live-into-phi-node's-block? ( bb src dst -- ? )
|
||||||
src bb live-in key? ;
|
src bb live-in? ;
|
||||||
|
|
||||||
:: phi-node-is-live-out-of-operand's-block? ( bb src dst -- ? )
|
:: phi-node-is-live-out-of-operand's-block? ( bb src dst -- ? )
|
||||||
dst src def-of live-out key? ;
|
dst src def-of live-out? ;
|
||||||
|
|
||||||
:: operand-is-phi-node-and-live-into-operand's-block? ( bb src dst -- ? )
|
:: operand-is-phi-node-and-live-into-operand's-block? ( bb src dst -- ? )
|
||||||
{ [ src insn-of ##phi? ] [ src src def-of live-in key? ] } 0&& ;
|
{ [ src insn-of ##phi? ] [ src src def-of live-in? ] } 0&& ;
|
||||||
|
|
||||||
:: operand-being-renamed? ( bb src dst -- ? )
|
:: operand-being-renamed? ( bb src dst -- ? )
|
||||||
src processed-names get key? ;
|
src processed-names get key? ;
|
||||||
|
|
Loading…
Reference in New Issue