pub struct Incoming {
pub at: i32,
pub through_frame_pointer: bool,
}Expand description
Where the arguments the caller passed on the stack are, and which register reaches them.
Two fields rather than one number because a realigned frame has no constant distance from its stack pointer to the caller’s. Forcing the alignment threw that distance away, and the frame pointer is what still reaches the caller’s stack afterwards, which is why a realigned frame is made to keep one. So there is always an answer, and which register it is counted from is part of it rather than something the reader is left to work out.
Fields§
§at: i32How far above that register the first argument passed on the stack is.
through_frame_pointer: boolWhether the register is the frame pointer rather than the stack pointer.
Implementations§
Source§impl Incoming
impl Incoming
Sourcepub fn from_stack(at: i32) -> Self
pub fn from_stack(at: i32) -> Self
That far above the stack pointer as it stands in the body of the function, which is where every other offset in a frame is from.
Sourcepub fn from_frame(at: i32) -> Self
pub fn from_frame(at: i32) -> Self
That far above the frame pointer, which is the only way a realigned frame reaches back.