USING: accessors arrays compiler.cfg compiler.cfg.instructions compiler.cfg.linear-scan.live-intervals compiler.cfg.linear-scan.numbering compiler.cfg.linear-scan.ranges compiler.cfg.liveness compiler.cfg.registers compiler.cfg.ssa.destruction.leaders compiler.cfg.utilities cpu.architecture fry kernel namespaces sequences tools.test ; IN: compiler.cfg.linear-scan.live-intervals.tests : ( ranges -- live-interval ) 10 [ '[ first2 _ ranges>> add-range ] each ] keep dup compute-start/end ; ! cfg>sync-points { V{ T{ sync-point { n 0 } } } } [ V{ T{ ##call-gc } } insns>cfg [ number-instructions ] [ cfg>sync-points ] bi ] unit-test ! intervals-intersect? { t f f } [ { { 4 20 } } { { 8 12 } } intervals-intersect? { { 9 20 } { 3 5 } } { { 7 8 } { 0 1 } } intervals-intersect? { { 3 5 } } { { 7 8 } } intervals-intersect? ] unit-test ! handle-live-out { } [ H{ } clone live-outs set handle-live-out ] unit-test { H{ { 8 T{ live-interval-state { vreg 8 } { ranges V{ { -10 23 } } } { uses V{ } } } } { 9 T{ live-interval-state { vreg 9 } { ranges V{ { -10 23 } } } { uses V{ } } } } { 4 T{ live-interval-state { vreg 4 } { ranges V{ { -10 23 } } } { uses V{ } } } } } } [ -10 from set 23 to set H{ } clone live-intervals set H{ { 4 4 } { 8 8 } { 9 9 } } leader-map set H{ { 4 int-rep } { 8 int-rep } { 9 int-rep } } representations set [ H{ { 4 4 } { 8 8 } { 9 9 } } 2array 1array live-outs set ] [ handle-live-out ] bi live-intervals get ] unit-test