compiler.cfg.linear-scan.ranges: new word ranges-endpoints and remove relevant-ranges
parent
8c781639ed
commit
2943e7f246
|
@ -70,23 +70,3 @@ IN: compiler.cfg.linear-scan.live-intervals.tests
|
|||
<basic-block> [ H{ { 4 4 } { 8 8 } { 9 9 } } 2array 1array live-outs set ]
|
||||
[ handle-live-out ] bi live-intervals get
|
||||
] unit-test
|
||||
|
||||
! relevant-ranges
|
||||
{
|
||||
V{ T{ live-range { from 0 } { to 10 } } }
|
||||
V{ T{ live-range { from 5 } { to 10 } } }
|
||||
} [
|
||||
T{ live-interval-state
|
||||
{ start 0 }
|
||||
{ end 10 }
|
||||
{ uses { 0 10 } }
|
||||
{ ranges V{ T{ live-range f 0 10 } } }
|
||||
}
|
||||
T{ live-interval-state
|
||||
{ start 5 }
|
||||
{ end 10 }
|
||||
{ uses { 5 10 } }
|
||||
{ ranges V{ T{ live-range f 5 10 } } }
|
||||
}
|
||||
relevant-ranges
|
||||
] unit-test
|
||||
|
|
|
@ -131,8 +131,7 @@ M: hairy-clobber-insn compute-live-intervals* ( insn -- )
|
|||
} cleave ;
|
||||
|
||||
: compute-start/end ( live-interval -- )
|
||||
dup ranges>> [ first from>> ] [ last to>> ] bi
|
||||
[ >>start ] [ >>end ] bi* drop ;
|
||||
dup ranges>> ranges-endpoints [ >>start ] [ >>end ] bi* drop ;
|
||||
|
||||
ERROR: bad-live-interval live-interval ;
|
||||
|
||||
|
@ -174,11 +173,8 @@ M: insn insn>sync-point drop f ;
|
|||
: compute-live-intervals ( cfg -- intervals/sync-points )
|
||||
[ cfg>live-intervals ] [ cfg>sync-points ] bi append ;
|
||||
|
||||
: relevant-ranges ( interval1 interval2 -- ranges1 ranges2 )
|
||||
[ [ ranges>> ] bi@ ] [ nip start>> ] 2bi '[ to>> _ >= ] filter ;
|
||||
|
||||
: intersect-intervals ( interval1 interval2 -- n/f )
|
||||
relevant-ranges intersect-ranges ;
|
||||
[ ranges>> ] bi@ intersect-ranges ;
|
||||
|
||||
: intervals-intersect? ( interval1 interval2 -- ? )
|
||||
intersect-intervals >boolean ; inline
|
||||
|
|
|
@ -198,3 +198,11 @@ IN: compiler.cfg.linear-scan.ranges.tests
|
|||
} [
|
||||
20 { T{ live-range { from 0 } { to 40 } } } fix-upper-bound
|
||||
] unit-test
|
||||
|
||||
! ranges-endpoints
|
||||
{ 0 40 } [
|
||||
V{
|
||||
T{ live-range { from 0 } { to 10 } }
|
||||
T{ live-range { from 30 } { to 40 } }
|
||||
} ranges-endpoints
|
||||
] unit-test
|
||||
|
|
|
@ -62,3 +62,6 @@ C: <live-range> live-range
|
|||
|
||||
: fix-upper-bound ( n ranges -- ranges' )
|
||||
over '[ from>> _ <= ] filter [ last to<< ] keep ;
|
||||
|
||||
: ranges-endpoints ( ranges -- start end )
|
||||
[ first from>> ] [ last to>> ] bi ;
|
||||
|
|
Loading…
Reference in New Issue