Skip to main content

Incoming

Struct Incoming 

Source
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: i32

How far above that register the first argument passed on the stack is.

§through_frame_pointer: bool

Whether the register is the frame pointer rather than the stack pointer.

Implementations§

Source§

impl Incoming

Source

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.

Source

pub fn from_frame(at: i32) -> Self

That far above the frame pointer, which is the only way a realigned frame reaches back.

Trait Implementations§

Source§

impl Clone for Incoming

Source§

fn clone(&self) -> Incoming

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Incoming

Source§

impl Debug for Incoming

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Incoming

Source§

impl PartialEq for Incoming

Source§

fn eq(&self, other: &Incoming) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Incoming

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.