compiler.cfg.stack-frame: stub docs and tests for vocab

db4
Björn Lindqvist 2014-11-15 07:14:47 +01:00 committed by John Benediktsson
parent 8a0b4c3d26
commit 0a30bd9218
2 changed files with 49 additions and 3 deletions

View File

@ -1,10 +1,37 @@
USING: help.markup help.syntax ;
USING: cpu.x86 help.markup help.syntax layouts math ;
IN: compiler.cfg.stack-frame
HELP: stack-frame
{ $class-description "Counts of, among other things, how much stack a compiled word needs. It has the following slots:"
{ $class-description "Counts of, among other things, how much stack a compiled word needs. The stack frame is organized in the following fashion:"
{ $list
"Parameter space:"
"Allocation area: space for local allocations."
"Spill area: space for register spills."
{ "Reserved stack space: only applicable on Windows x86.64. See " { $link reserved-stack-space } "." }
{ "One final " { $link cell } " of padding." }
}
"The stack frame is also aligned to a 16 byte boundary. It has the following slots:"
{ $table
{ { $slot "total-size" } { "Total size of the stack frame." } }
{ { $slot "allot-area-base" } { "Base offset of the allocation area." } }
{ { $slot "allot-area-size" } { "Number of bytes requires for the allocation area." } }
{ { $slot "allot-area-align" } { "This slot is always at least " { $link cell } " bytes." } }
{ { $slot "spill-area-base" } { "Base offset for the spill area." } }
{ { $slot "spill-area-size" } { "Number of bytes requires for all spill slots." } }
{ { $slot "spill-area-align" } { "This slot is always at least " { $link cell } " bytes." } }
}
} ;
}
{ $see-also align-stack } ;
HELP: (stack-frame-size)
{ $values { "stack-frame" stack-frame } { "n" integer } }
{ $description "Base stack frame size, without padding and alignment." } ;
HELP: spill-offset
{ $values { "n" integer } { "offset" integer } }
{ $description "Offset in the current " { $link stack-frame } " to byte at index 'n' in the spill area." } ;
ARTICLE: "compiler.cfg.stack-frame" "Stack frames"
"This vocab contains definitions for constructing stack frames." ;
ABOUT: "compiler.cfg.stack-frame"

View File

@ -0,0 +1,19 @@
USING: accessors compiler.cfg compiler.cfg.build-stack-frame
compiler.cfg.stack-frame kernel namespaces tools.test ;
IN: compiler.cfg.stack-frame.tests
{
112
! 112 37 +
149
} [
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
[ spill-area-base>> ]
[ stack-frame set 37 spill-offset ] bi
] unit-test