diff --git a/basis/compiler/cfg/build-stack-frame/build-stack-frame-tests.factor b/basis/compiler/cfg/build-stack-frame/build-stack-frame-tests.factor index 4c99ee2570..a585400eae 100644 --- a/basis/compiler/cfg/build-stack-frame/build-stack-frame-tests.factor +++ b/basis/compiler/cfg/build-stack-frame/build-stack-frame-tests.factor @@ -1,44 +1,25 @@ -USING: accessors combinators.short-circuit compiler.cfg -compiler.cfg.build-stack-frame compiler.cfg.instructions -compiler.cfg.stack-frame kernel layouts slots.syntax system -tools.test ; +USING: accessors compiler.cfg compiler.cfg.build-stack-frame +compiler.cfg.instructions compiler.cfg.stack-frame cpu.x86 kernel layouts +math slots.syntax system tools.test ; IN: compiler.cfg.build-stack-frame.tests -{ [ os windows? ] [ cell-bits 64 = ] } 0&& [ - { - ! 91 8 align - 96 - ! 91 8 align 16 + - 112 - ! XXX: Calculation is wrong for Windows 64 (off by 32 bytes) - ! 91 8 align 16 + 16 8 align + cell + 16 align - 176 - } [ - T{ stack-frame - { params 91 } - { allot-area-align 8 } - { allot-area-size 10 } - { spill-area-align 8 } - { spill-area-size 16 } - } dup finalize-stack-frame - slots[ allot-area-base spill-area-base total-size ] - ] unit-test -] [ - { - ! 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 } - } dup finalize-stack-frame - slots[ allot-area-base spill-area-base total-size ] - ] unit-test -] if \ No newline at end of file +{ + ! 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 } + } dup finalize-stack-frame + slots[ allot-area-base spill-area-base total-size ] + ! Exclude any reserved stack space 32 bytes on win64, 0 bytes + ! on all other platforms. + reserved-stack-space - +] unit-test