Struct wasmer_vm::table::VMTable

source ·
pub struct VMTable {
    vec: Vec<RawTableElement>,
    maximum: Option<u32>,
    table: TableType,
    style: TableStyle,
    vm_table_definition: MaybeInstanceOwned<VMTableDefinition>,
}
Expand description

A table instance.

Fields§

§vec: Vec<RawTableElement>§maximum: Option<u32>§table: TableType

The WebAssembly table description.

§style: TableStyle

Our chosen implementation style.

§vm_table_definition: MaybeInstanceOwned<VMTableDefinition>

Implementations§

source§

impl VMTable

source

pub fn new(table: &TableType, style: &TableStyle) -> Result<Self, String>

Create a new linear table instance with specified minimum and maximum number of elements.

This creates a Table with metadata owned by a VM, pointed to by vm_table_location: this can be used to create a local table.

source

pub fn get_runtime_size(&self) -> u32

Returns the size of the table

source

pub unsafe fn from_definition( table: &TableType, style: &TableStyle, vm_table_location: NonNull<VMTableDefinition>, ) -> Result<Self, String>

Create a new linear table instance with specified minimum and maximum number of elements.

This creates a Table with metadata owned by a VM, pointed to by vm_table_location: this can be used to create a local table.

§Safety
  • vm_table_location must point to a valid location in VM memory.
source

unsafe fn new_inner( table: &TableType, style: &TableStyle, vm_table_location: Option<NonNull<VMTableDefinition>>, ) -> Result<Self, String>

Create a new Table with either self-owned or VM owned metadata.

source

fn get_vm_table_definition(&self) -> NonNull<VMTableDefinition>

Get the VMTableDefinition.

source

pub fn ty(&self) -> &TableType

Returns the type for this Table.

source

pub fn style(&self) -> &TableStyle

Returns the style for this Table.

source

pub fn size(&self) -> u32

Returns the number of allocated elements.

source

pub fn grow(&mut self, delta: u32, init_value: TableElement) -> Option<u32>

Grow table by the specified amount of elements.

Returns None if table can’t be grown by the specified amount of elements, otherwise returns the previous size of the table.

source

pub fn get(&self, index: u32) -> Option<TableElement>

Get reference to the specified element.

Returns None if the index is out of bounds.

source

pub fn set(&mut self, index: u32, reference: TableElement) -> Result<(), Trap>

Set reference to the specified element.

§Errors

Returns an error if the index is out of bounds.

source

pub fn vmtable(&self) -> NonNull<VMTableDefinition>

Return a VMTableDefinition for exposing the table to compiled wasm code.

source

pub fn copy( &mut self, src_table: &Self, dst_index: u32, src_index: u32, len: u32, ) -> Result<(), Trap>

Copy len elements from src_table[src_index..] into dst_table[dst_index..].

§Errors

Returns an error if the range is out of bounds of either the source or destination tables.

source

pub fn copy_on_write(&self) -> Result<Self, String>

Copies the table into a new table

source

pub fn copy_within( &mut self, dst_index: u32, src_index: u32, len: u32, ) -> Result<(), Trap>

Copy len elements from table[src_index..] to table[dst_index..].

§Errors

Returns an error if the range is out of bounds of either the source or destination tables.

Trait Implementations§

source§

impl Debug for VMTable

source§

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

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

impl StoreObject for VMTable

source§

fn list(ctx: &StoreObjects) -> &Vec<Self>

source§

fn list_mut(ctx: &mut StoreObjects) -> &mut Vec<Self>

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
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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.

§

impl<T> LayoutRaw for T

§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
§

impl<T> Pointee for T

§

type Metadata = ()

The metadata type for pointers and references to this type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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.