]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/stacks/vacant/vacant-tests.factor
5ea66ba5d94f780adca90052266e51b813306f5e
[factor.git] / basis / compiler / cfg / stacks / vacant / vacant-tests.factor
1 USING: accessors arrays assocs compiler.cfg
2 compiler.cfg.dataflow-analysis.private compiler.cfg.instructions
3 compiler.cfg.linearization compiler.cfg.registers
4 compiler.cfg.utilities compiler.cfg.stacks.vacant kernel math sequences sorting
5 tools.test vectors ;
6 IN: compiler.cfg.stacks.vacant.tests
7
8 {
9     { { { } { 0 0 0 } } { { } { 0 } } }
10 } [
11     { { 4 { 3 2 1 -3 0 -2 -1 } } { 0 { -1 } } } state>gc-data
12 ] unit-test
13
14 ! Replace -1, then gc. Peek is ok here because the -1 should be
15 ! checked.
16 { { 0 } } [
17     V{
18         T{ ##replace { src 10 } { loc D -1 } }
19         T{ ##alien-invoke { gc-map T{ gc-map { scrub-d { } } } } }
20         T{ ##peek { dst 0 } { loc D -1 } }
21     }
22     [ insns>cfg fill-gc-maps ]
23     [ second gc-map>> check-d>> ] bi
24 ] unit-test
25
26 ! Replace -1, then gc. Peek is ok here because the -1 should be
27 ! checked.
28 { { 0 } } [
29     V{
30         T{ ##replace { src 10 } { loc D -1 } }
31         T{ ##alien-invoke { gc-map T{ gc-map { scrub-d { } } } } }
32         T{ ##peek { dst 0 } { loc D -1 } }
33     }
34     [ insns>cfg fill-gc-maps ]
35     [ second gc-map>> check-d>> ] bi
36 ] unit-test
37
38 ! visit-insn should set the gc info.
39 { { 0 0 } { } } [
40     { { 2 { } } { 0 { } } }
41     T{ ##alien-invoke { gc-map T{ gc-map } } }
42     [ gc-map>> set-gc-map ] keep gc-map>> [ scrub-d>> ] [ scrub-r>> ] bi
43 ] unit-test