Skip to main content

WasmRepr

Enum WasmRepr 

Source
pub(crate) enum WasmRepr {
    Val(ValType),
    Struct(Vec<WasmRepr>),
    Class(Vec<WasmRepr>),
    Nothing,
}
Expand description

The WASM representation for a Dada value independent of the place in which it is stored. This isn’t really a specific representation, in some sense, but rather enough information to determine how to represent an instance of this value in any of the places it could appear:

  • On the WebAssembly stack or memory, in which case all the flattened values would be pushed/stored one after the other.
  • In WebAssembly local variables, in which case a subset of the values would be stored in subsequent variables. Note that the data for classes never appears in locals, and so a single value can be partially stored in locals and partially in memory.

§See also

The WasmPlaceRepr type describes the representation of particular Dada place (which in turn has an associated Dada type).

Variants§

§

Val(ValType)

Indicates a single primitive value. This may appear on the WASM stack, a local value, or the memory, depending on the context in which it appears.

§

Struct(Vec<WasmRepr>)

An aggregate value type. The values needed to represent its fields are found in the Vec<WasmRepr> argument.

§

Class(Vec<WasmRepr>)

A class. The data for classes is always stored in WASM memory. It begins with an (implicit) I32 flag word and then contains whatever values are needed to represent the fields, stored as a Vec<WasmRepr>.

§

Nothing

No data at all (something zero-sized).

Implementations§

Source§

impl WasmRepr

Source

pub fn flatten(&self) -> Vec<ValType>

Primitive WASM values needed for a value with this representation stored on the WASM stack or in memory.

Source

pub fn local_val_tys(&self) -> Vec<ValType>

Returns the types of the WASM local variables that would be used to store a value with this representation. Any data found inside of a class is stored in memory and hence not represented in the return type.

Trait Implementations§

Source§

impl Debug for WasmRepr

Source§

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

Formats the value using the given formatter. 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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Lookup<T> for T

§

fn into_owned(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> DebugArgument for T
where T: Debug,

§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T