]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/stacks/clearing/clearing-tests.factor
compiler.*: Remove the scrubbing part of the GC maps
[factor.git] / basis / compiler / cfg / stacks / clearing / clearing-tests.factor
1 USING: compiler.cfg.instructions compiler.cfg.linearization
2 compiler.cfg.registers compiler.cfg.stacks.clearing compiler.cfg.utilities
3 kernel tools.test ;
4 IN: compiler.cfg.stacks.clearing.tests
5
6 ! clear-uninitialized
7 {
8     V{
9         T{ ##inc { loc D: 2 } { insn# 0 } }
10         T{ ##clear { loc T{ ds-loc { n 1 } } } }
11         T{ ##clear { loc T{ ds-loc } } }
12         T{ ##peek { loc D: 2 } { insn# 1 } }
13     }
14 } [
15     { T{ ##inc f D: 2 } T{ ##peek f f D: 2 } } insns>cfg
16     dup clear-uninitialized cfg>insns
17 ] unit-test
18
19 ! dangerous-insn?
20 {
21     t f t t
22 } [
23     { { 0 { } } { 0 { } } } T{ ##peek { loc D: 0 } } dangerous-insn?
24     { { 1 { } } { 0 { } } } T{ ##peek { loc D: 0 } } dangerous-insn?
25     { { 2 { 0 1 } } { 0 { } } } T{ ##peek { loc D: 2 } } dangerous-insn?
26     { { 0 { } } { 3 { } } } T{ ##call-gc } dangerous-insn?
27 ] unit-test
28
29 ! state>clears
30 {
31     { }
32 } [
33     { { 2 { } } { 0 { } } } state>clears
34 ] unit-test
35
36 {
37     {
38         T{ ##clear { loc T{ ds-loc { n 1 } } } }
39         T{ ##clear { loc T{ ds-loc } } }
40     }
41 } [
42     { { 2 { 0 1 } } { 0 { } } } state>clears
43 ] unit-test
44
45 { { } } [
46     { { 0 { } } { 0 { } } } state>clears
47 ] unit-test
48
49 {
50     {
51         T{ ##clear { loc T{ ds-loc } } }
52         T{ ##clear { loc T{ rs-loc } } }
53     }
54 } [
55     { { 1 { 0 } } { 1 { 0 } } } state>clears
56 ] unit-test