wasmtime_environ

Struct StackMap

Source
pub struct StackMap { /* private fields */ }
Expand description

A map for determining where live GC references live in a stack frame.

Note that this is currently primarily documented as cranelift’s binemit::StackMap, so for detailed documentation about this please read the docs over there.

Implementations§

Source§

impl StackMap

Source

pub fn new(frame_size: u32, bits: CompoundBitSet) -> StackMap

Creates a new StackMap, typically from a preexisting binemit::StackMap.

Source

pub fn frame_size(&self) -> u32

Returns the byte size of this stack map’s frame.

Source

pub unsafe fn sp(&self, fp: *mut usize) -> *mut usize

Given a frame pointer, get the stack pointer.

§Safety

The fp must be the frame pointer at the code offset that this stack map is associated with.

Source

pub unsafe fn live_gc_refs( &self, sp: *mut usize, ) -> impl Iterator<Item = *mut u32> + '_

Given the stack pointer, get a reference to each live GC reference in the stack frame.

§Safety

The sp must be the stack pointer at the code offset that this stack map is associated with.

Trait Implementations§

Source§

impl Debug for StackMap

Source§

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

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

impl<'de> Deserialize<'de> for StackMap

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for StackMap

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,