]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/write-barrier/write-barrier-tests.factor
db configurations factored out through db.info
[factor.git] / basis / compiler / cfg / write-barrier / write-barrier-tests.factor
1 USING: compiler.cfg.write-barrier compiler.cfg.instructions
2 compiler.cfg.registers compiler.cfg.debugger cpu.architecture
3 arrays tools.test vectors compiler.cfg kernel accessors ;
4 IN: compiler.cfg.write-barrier.tests
5
6 : test-write-barrier ( insns -- insns )
7     write-barriers-step ;
8
9 [
10     {
11         T{ ##peek f V int-regs 4 D 0 f }
12         T{ ##copy f V int-regs 6 V int-regs 4 f }
13         T{ ##allot f V int-regs 7 24 array V int-regs 8 f }
14         T{ ##load-immediate f V int-regs 9 8 f }
15         T{ ##set-slot-imm f V int-regs 9 V int-regs 7 1 3 f }
16         T{ ##set-slot-imm f V int-regs 6 V int-regs 7 2 3 f }
17         T{ ##replace f V int-regs 7 D 0 f }
18     }
19 ] [
20     {
21         T{ ##peek f V int-regs 4 D 0 }
22         T{ ##copy f V int-regs 6 V int-regs 4 }
23         T{ ##allot f V int-regs 7 24 array V int-regs 8 }
24         T{ ##load-immediate f V int-regs 9 8 }
25         T{ ##set-slot-imm f V int-regs 9 V int-regs 7 1 3 }
26         T{ ##write-barrier f V int-regs 7 V int-regs 10 V int-regs 11 }
27         T{ ##set-slot-imm f V int-regs 6 V int-regs 7 2 3 }
28         T{ ##write-barrier f V int-regs 7 V int-regs 12 V int-regs 13 }
29         T{ ##replace f V int-regs 7 D 0 }
30     } test-write-barrier
31 ] unit-test
32
33 [
34     {
35         T{ ##load-immediate f V int-regs 4 24 }
36         T{ ##peek f V int-regs 5 D -1 }
37         T{ ##peek f V int-regs 6 D -2 }
38         T{ ##set-slot-imm f V int-regs 5 V int-regs 6 3 2 }
39         T{ ##write-barrier f V int-regs 6 V int-regs 7 V int-regs 8 }
40     }
41 ] [
42     {
43         T{ ##load-immediate f V int-regs 4 24 }
44         T{ ##peek f V int-regs 5 D -1 }
45         T{ ##peek f V int-regs 6 D -2 }
46         T{ ##set-slot-imm f V int-regs 5 V int-regs 6 3 2 }
47         T{ ##write-barrier f V int-regs 6 V int-regs 7 V int-regs 8 }
48     } test-write-barrier
49 ] unit-test
50
51 [
52     {
53         T{ ##peek f V int-regs 19 D -3 }
54         T{ ##peek f V int-regs 22 D -2 }
55         T{ ##copy f V int-regs 23 V int-regs 19 }
56         T{ ##set-slot-imm f V int-regs 22 V int-regs 23 3 2 }
57         T{ ##write-barrier f V int-regs 23 V int-regs 24 V int-regs 25 }
58         T{ ##copy f V int-regs 26 V int-regs 19 }
59         T{ ##peek f V int-regs 28 D -1 }
60         T{ ##copy f V int-regs 29 V int-regs 19 }
61         T{ ##set-slot-imm f V int-regs 28 V int-regs 29 4 2 }
62     }
63 ] [
64     {
65         T{ ##peek f V int-regs 19 D -3 }
66         T{ ##peek f V int-regs 22 D -2 }
67         T{ ##copy f V int-regs 23 V int-regs 19 }
68         T{ ##set-slot-imm f V int-regs 22 V int-regs 23 3 2 }
69         T{ ##write-barrier f V int-regs 23 V int-regs 24 V int-regs 25 }
70         T{ ##copy f V int-regs 26 V int-regs 19 }
71         T{ ##peek f V int-regs 28 D -1 }
72         T{ ##copy f V int-regs 29 V int-regs 19 }
73         T{ ##set-slot-imm f V int-regs 28 V int-regs 29 4 2 }
74         T{ ##write-barrier f V int-regs 29 V int-regs 30 V int-regs 3 }
75     } test-write-barrier
76 ] unit-test