factor/basis/compiler/cfg/linear-scan/ranges/ranges-tests.factor

43 lines
1.1 KiB
Factor
Raw Normal View History

USING: compiler.cfg.linear-scan.ranges fry kernel sequences tools.test ;
IN: compiler.cfg.linear-scan.ranges.tests
: combine-ranges ( seq -- ranges )
V{ } clone [ '[ first2 _ add-range ] each ] keep ;
! extend-ranges?
{ f } [
10 { } extend-ranges?
] unit-test
! add-range
{
V{ T{ live-range { from 5 } { to 12 } } }
V{ T{ live-range { from 5 } { to 12 } } }
} [
{ { 5 10 } { 8 12 } } combine-ranges
{ { 10 12 } { 5 10 } } combine-ranges
] unit-test
! ranges-cover?
{
t f f t t
} [
115 { { 90 120 } { 40 50 } } combine-ranges ranges-cover?
50 { { 60 70 } { 20 30 } } combine-ranges ranges-cover?
120 { { 130 140 } { 70 80 } { 50 60 } { 44 48 } { 40 42 } }
combine-ranges ranges-cover?
135 { { 130 140 } { 70 80 } { 50 60 } { 44 48 } }
combine-ranges ranges-cover?
135 { { 130 140 } { 70 80 } { 50 60 } { 44 48 } { 40 42 } } reverse
combine-ranges ranges-cover?
] unit-test
! shorten-ranges
{
V{ T{ live-range { from 8 } { to 12 } } }
V{ T{ live-range { from 9 } { to 9 } } }
} [
8 { { 4 12 } } combine-ranges [ shorten-ranges ] keep
9 { } combine-ranges [ shorten-ranges ] keep
] unit-test