]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/linear-scan/resolve/resolve-tests.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / compiler / cfg / linear-scan / resolve / resolve-tests.factor
1 USING: accessors arrays compiler.cfg compiler.cfg.instructions
2 compiler.cfg.linear-scan.debugger
3 compiler.cfg.linear-scan.live-intervals
4 compiler.cfg.linear-scan.numbering
5 compiler.cfg.linear-scan.resolve compiler.cfg.predecessors
6 compiler.cfg.registers compiler.cfg.rpo
7 compiler.cfg.debugger cpu.architecture kernel
8 namespaces tools.test vectors ;
9 IN: compiler.cfg.linear-scan.resolve.tests
10
11 [ { 1 2 3 4 5 6 } ] [
12     { 3 4 } V{ 1 2 } clone [ { 5 6 } 3append-here ] keep >array
13 ] unit-test
14
15 V{
16     T{ ##peek f V int-regs 0 D 0 }
17     T{ ##branch }
18 } 0 test-bb
19
20 V{
21     T{ ##replace f V int-regs 0 D 1 }
22     T{ ##return }
23 } 1 test-bb
24
25 1 get 1vector 0 get (>>successors)
26
27 cfg new 0 get >>entry
28 compute-predecessors
29 dup reverse-post-order number-instructions
30 drop
31
32 CONSTANT: test-live-interval-1
33 T{ live-interval
34    { start 0 }
35    { end 6 }
36    { uses V{ 0 6 } }
37    { ranges V{ T{ live-range f 0 2 } T{ live-range f 4 6 } } }
38    { spill-to 0 }
39    { vreg V int-regs 0 }
40 }
41
42 [ f ] [
43     0 get test-live-interval-1 spill-to
44 ] unit-test
45
46 [ 0 ] [
47     1 get test-live-interval-1 spill-to
48 ] unit-test
49
50 CONSTANT: test-live-interval-2
51 T{ live-interval
52    { start 0 }
53    { end 6 }
54    { uses V{ 0 6 } }
55    { ranges V{ T{ live-range f 0 2 } T{ live-range f 4 6 } } }
56    { reload-from 0 }
57    { vreg V int-regs 0 }
58 }
59
60 [ 0 ] [
61     0 get test-live-interval-2 reload-from
62 ] unit-test
63
64 [ f ] [
65     1 get test-live-interval-2 reload-from
66 ] unit-test