pub struct SignatureRegistry {
inner: RwLock<Inner>,
}Expand description
WebAssembly requires that the caller and callee signatures in an indirect call must match. To implement this efficiently, keep a registry of all signatures, shared by all instances, so that call sites can just do an index comparison.
Fields§
§inner: RwLock<Inner>Implementations§
Source§impl SignatureRegistry
impl SignatureRegistry
Sourcepub fn register(
&self,
sig: &FunctionType,
hash: SignatureHash,
) -> VMSignatureHash
pub fn register( &self, sig: &FunctionType, hash: SignatureHash, ) -> VMSignatureHash
Register a signature and return its unique hash.
Sourcepub fn lookup_signature(
&self,
sig_hash: VMSignatureHash,
) -> Option<FunctionType>
pub fn lookup_signature( &self, sig_hash: VMSignatureHash, ) -> Option<FunctionType>
Looks up a registered signature by its hash.
Trait Implementations§
Source§impl Debug for SignatureRegistry
impl Debug for SignatureRegistry
Source§impl Default for SignatureRegistry
impl Default for SignatureRegistry
Source§fn default() -> SignatureRegistry
fn default() -> SignatureRegistry
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for SignatureRegistry
impl RefUnwindSafe for SignatureRegistry
impl Send for SignatureRegistry
impl Sync for SignatureRegistry
impl Unpin for SignatureRegistry
impl UnwindSafe for SignatureRegistry
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.