]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/build-stack-frame/build-stack-frame-tests.factor
9acd7215f06f1abcbd2ff09809ac8239e578b9c8
[factor.git] / basis / compiler / cfg / build-stack-frame / build-stack-frame-tests.factor
1 USING: accessors compiler.cfg.build-stack-frame
2 compiler.cfg.instructions compiler.cfg.linearization
3 compiler.cfg.stack-frame compiler.cfg.utilities cpu.x86 kernel math
4 sequences slots.syntax tools.test ;
5 IN: compiler.cfg.build-stack-frame.tests
6
7 {
8     ! 91 8 align
9     96
10     ! 91 8 align 16 +
11     112
12     ! 91 8 align 16 + 16 8 align + cell + 16 align
13     144
14 } [
15     T{ stack-frame
16        { params 91 }
17        { allot-area-align 8 }
18        { allot-area-size 10 }
19        { spill-area-align 8 }
20        { spill-area-size 16 }
21     } finalize-stack-frame
22     slots[ allot-area-base spill-area-base total-size ]
23     ! Exclude any reserved stack space 32 bytes on win64, 0 bytes
24     ! on all other platforms.
25     reserved-stack-space -
26 ] unit-test
27
28 { f } [
29     { } insns>cfg dup build-stack-frame stack-frame>>
30 ] unit-test
31
32 { t } [
33     { T{ ##call-gc } } insns>cfg dup build-stack-frame
34     stack-frame>> stack-frame?
35 ] unit-test
36
37 { 0 } [
38     {
39         T{ ##call-gc }
40         T{ ##local-allot { dst 1 } { size 32 } { align 8 } }
41     } insns>cfg dup build-stack-frame cfg>insns last offset>>
42 ] unit-test