compiler.cfg.ssa.construction.tdmsc: fix previous broken commits.

db4
John Benediktsson 2013-03-23 18:44:49 -07:00
parent 15f9ba2763
commit d0ad18a64e
1 changed files with 13 additions and 19 deletions

View File

@ -14,7 +14,7 @@ IN: compiler.cfg.ssa.construction.tdmsc
<PRIVATE <PRIVATE
SYMBOLS: visited merge-sets levels again? ; SYMBOLS: merge-sets levels again? ;
: init-merge-sets ( cfg -- ) : init-merge-sets ( cfg -- )
post-order dup length '[ _ <bit-set> ] H{ } map>assoc merge-sets set ; post-order dup length '[ _ <bit-set> ] H{ } map>assoc merge-sets set ;
@ -32,10 +32,9 @@ SYMBOLS: visited merge-sets levels again? ;
: level ( bb -- n ) levels get at ; inline : level ( bb -- n ) levels get at ; inline
: update-merge-set ( tmp to -- ) : update-merge-set ( tmp to -- )
[ merge-sets get ] dip [ merge-sets get ] dip over '[
'[
_ _
[ merge-sets get at union ] [ _ at union ]
[ number>> over adjoin ] [ number>> over adjoin ]
bi bi
] change-at ; ] change-at ;
@ -50,30 +49,25 @@ SYMBOLS: visited merge-sets levels again? ;
[ [ predecessors>> ] keep ] dip [ [ predecessors>> ] keep ] dip
'[ _ 2dup j-edge? _ [ 2drop ] if ] each ; inline '[ _ 2dup j-edge? _ [ 2drop ] if ] each ; inline
: visited? ( pair -- ? ) visited get in? ;
: consistent? ( snode lnode -- ? ) : consistent? ( snode lnode -- ? )
[ merge-sets get at ] bi@ subset? ; merge-sets get '[ _ at ] bi@ subset? ;
: (process-edge) ( from to -- ) : (process-edge) ( from to visited -- )
f walk [ [ f walk ] dip '[
2dup 2array visited? [ 2dup 2array _ in? [
consistent? [ again? on ] unless consistent? [ again? on ] unless
] [ 2drop ] if ] [ 2drop ] if
] each-incoming-j-edge ; ] each-incoming-j-edge ;
: process-edge ( from to -- ) : process-edge ( from to visited -- )
2dup 2array dup visited? [ 3drop ] [ [ 2over 2array swap ?adjoin ] keep
visited get adjoin '[ _ (process-edge) ] [ 2drop ] if ;
(process-edge)
] if ;
: process-block ( bb -- ) : process-block ( bb visited -- )
[ process-edge ] each-incoming-j-edge ; '[ _ process-edge ] each-incoming-j-edge ;
: compute-merge-set-step ( bfo -- ) : compute-merge-set-step ( bfo -- )
HS{ } clone visited set HS{ } clone '[ _ process-block ] each ;
[ process-block ] each ;
: compute-merge-set-loop ( cfg -- ) : compute-merge-set-loop ( cfg -- )
breadth-first-order breadth-first-order