2015-07-21 05:27:14 -04:00
|
|
|
USING: accessors compiler.cfg.build-stack-frame
|
|
|
|
compiler.cfg.instructions compiler.cfg.linearization
|
|
|
|
compiler.cfg.stack-frame compiler.cfg.utilities cpu.x86 kernel math
|
|
|
|
sequences slots.syntax tools.test ;
|
2014-11-15 01:13:43 -05:00
|
|
|
IN: compiler.cfg.build-stack-frame.tests
|
|
|
|
|
2014-11-23 21:42:27 -05:00
|
|
|
{
|
|
|
|
! 91 8 align
|
|
|
|
96
|
|
|
|
! 91 8 align 16 +
|
|
|
|
112
|
|
|
|
! 91 8 align 16 + 16 8 align + cell + 16 align
|
|
|
|
144
|
|
|
|
} [
|
|
|
|
T{ stack-frame
|
|
|
|
{ params 91 }
|
|
|
|
{ allot-area-align 8 }
|
|
|
|
{ allot-area-size 10 }
|
|
|
|
{ spill-area-align 8 }
|
|
|
|
{ spill-area-size 16 }
|
2014-12-12 18:22:22 -05:00
|
|
|
} finalize-stack-frame
|
2014-11-23 21:42:27 -05:00
|
|
|
slots[ allot-area-base spill-area-base total-size ]
|
|
|
|
! Exclude any reserved stack space 32 bytes on win64, 0 bytes
|
|
|
|
! on all other platforms.
|
2015-07-02 16:37:42 -04:00
|
|
|
reserved-stack-space -
|
2014-11-23 21:42:27 -05:00
|
|
|
] unit-test
|
2015-07-21 03:03:33 -04:00
|
|
|
|
|
|
|
{ f } [
|
2015-07-21 05:27:14 -04:00
|
|
|
{ } insns>cfg dup build-stack-frame stack-frame>>
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ t } [
|
|
|
|
{ T{ ##call-gc } } insns>cfg dup build-stack-frame
|
|
|
|
stack-frame>> stack-frame?
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ 0 } [
|
|
|
|
{
|
|
|
|
T{ ##call-gc }
|
|
|
|
T{ ##local-allot { dst 1 } { size 32 } { align 8 } }
|
|
|
|
} insns>cfg dup build-stack-frame cfg>insns last offset>>
|
2015-07-21 03:03:33 -04:00
|
|
|
] unit-test
|