compiler.cfg.dominance: change needs-dominance effect from ( cfg -- cfg') to ( cfg -- )
parent
054982f24a
commit
76cb665a8d
|
@ -4,7 +4,7 @@ compiler.cfg.predecessors compiler.cfg.utilities ;
|
||||||
IN: compiler.cfg.dominance.tests
|
IN: compiler.cfg.dominance.tests
|
||||||
|
|
||||||
: test-dominance ( -- )
|
: test-dominance ( -- )
|
||||||
0 get block>cfg needs-dominance drop ;
|
0 get block>cfg needs-dominance ;
|
||||||
|
|
||||||
! Example with no back edges
|
! Example with no back edges
|
||||||
V{ } 0 test-bb
|
V{ } 0 test-bb
|
||||||
|
|
|
@ -78,9 +78,10 @@ PRIVATE>
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: needs-dominance ( cfg -- cfg' )
|
: needs-dominance ( cfg -- )
|
||||||
needs-predecessors
|
needs-predecessors
|
||||||
dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless ;
|
dup dominance-valid?>> [ compute-dominance t >>dominance-valid? ] unless
|
||||||
|
drop ;
|
||||||
|
|
||||||
: dominates? ( bb1 bb2 -- ? )
|
: dominates? ( bb1 bb2 -- ? )
|
||||||
swap [ pre-of ] [ [ pre-of ] [ maxpre-of ] bi ] bi* between? ;
|
swap [ pre-of ] [ [ pre-of ] [ maxpre-of ] bi ] bi* between? ;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
! 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 fry
|
||||||
hashtables hints kernel locals math namespaces sequences sets
|
hashtables hints kernel locals math namespaces sequences sets
|
||||||
compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
|
combinators compiler.cfg compiler.cfg.dominance compiler.cfg.rpo ;
|
||||||
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
|
||||||
|
@ -81,12 +81,12 @@ SYMBOLS: merge-sets levels again? ;
|
||||||
PRIVATE>
|
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 ]
|
||||||
tri ;
|
} cleave ;
|
||||||
|
|
||||||
: merge-set ( bbs -- bbs' )
|
: merge-set ( bbs -- bbs' )
|
||||||
(merge-set) [ members ] dip nths ;
|
(merge-set) [ members ] dip nths ;
|
||||||
|
|
|
@ -154,8 +154,7 @@ M: insn cleanup-insn , ;
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: destruct-ssa ( cfg -- cfg' )
|
: destruct-ssa ( cfg -- cfg' )
|
||||||
needs-dominance
|
dup needs-dominance
|
||||||
|
|
||||||
dup construct-cssa
|
dup construct-cssa
|
||||||
dup compute-defs
|
dup compute-defs
|
||||||
dup compute-insns
|
dup compute-insns
|
||||||
|
|
|
@ -54,11 +54,10 @@ SYMBOLS: def-indices kill-indices ;
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: compute-live-ranges ( cfg -- )
|
: compute-live-ranges ( cfg -- )
|
||||||
needs-dominance
|
|
||||||
|
|
||||||
H{ } clone def-indices set
|
H{ } clone def-indices set
|
||||||
H{ } clone kill-indices set
|
H{ } clone kill-indices set
|
||||||
[ compute-local-live-ranges ] simple-analysis ;
|
[ needs-dominance ]
|
||||||
|
[ [ compute-local-live-ranges ] simple-analysis ] bi ;
|
||||||
|
|
||||||
: def-index ( vreg bb -- n )
|
: def-index ( vreg bb -- n )
|
||||||
def-indices get at at ;
|
def-indices get at at ;
|
||||||
|
|
Loading…
Reference in New Issue