pub enum Growing {
Huge,
Aligned,
Probed,
}Expand description
What the frame could not do about a stack slot.
Variants§
Huge
An object of a size the number a frame counts bytes in does not reach.
Aligned
A variable length array wanting more alignment than a call leaves the stack pointer with.
Rounding the stack pointer down again after the bytes have been taken would put it somewhere no constant reaches the rest of the frame from, so a frame like this needs a second base register held for the whole of the function. Nothing here holds one.
Probed
A variable length array in a function whose frame is meant to be touched a page at a time.
The pages a prologue takes are touched by the prologue, which knows how many there are when it is written. The pages a variable length array takes are not known until the declaration runs, so touching them is a loop next to the declaration, and there is no loop here yet.