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