pub struct ModuleMetadata {
pub compile_info: CompileModuleInfo,
pub prefix: String,
pub data_initializers: Box<[OwnedDataInitializer]>,
pub function_body_lengths: PrimaryMap<LocalFunctionIndex, u64>,
pub cpu_features: u64,
}
Expand description
Serializable struct that represents the compiled metadata.
Fields§
§compile_info: CompileModuleInfo
Compile info
prefix: String
Prefix for function etc symbols
data_initializers: Box<[OwnedDataInitializer]>
Data initializers
function_body_lengths: PrimaryMap<LocalFunctionIndex, u64>
The function body lengths (used to find function by address)
cpu_features: u64
CPU features used (See CpuFeature
)
Implementations§
source§impl ModuleMetadata
impl ModuleMetadata
sourcepub fn split(
&mut self,
) -> (&mut CompileModuleInfo, ModuleMetadataSymbolRegistry)
pub fn split( &mut self, ) -> (&mut CompileModuleInfo, ModuleMetadataSymbolRegistry)
Get mutable ref to compile info and a copy of the registry
sourcepub fn get_symbol_registry(&self) -> ModuleMetadataSymbolRegistry
pub fn get_symbol_registry(&self) -> ModuleMetadataSymbolRegistry
Returns symbol registry.
sourcepub fn serialize(&self) -> Result<Vec<u8>, SerializeError>
pub fn serialize(&self) -> Result<Vec<u8>, SerializeError>
Serialize a Module into bytes The bytes will have the following format: RKYV serialization (any length) + POS (8 bytes)
sourcepub unsafe fn deserialize_unchecked(
metadata_slice: &[u8],
) -> Result<Self, DeserializeError>
pub unsafe fn deserialize_unchecked( metadata_slice: &[u8], ) -> Result<Self, DeserializeError>
Deserialize a Module from a slice. The slice must have the following format: RKYV serialization (any length) + POS (8 bytes)
§Safety
This method is unsafe since it deserializes data directly
from memory.
Right now we are not doing any extra work for validation, but
rkyv
has an option to do bytecheck on the serialized data before
serializing (via rkyv::check_archived_value
).
sourcepub fn deserialize(metadata_slice: &[u8]) -> Result<Self, DeserializeError>
pub fn deserialize(metadata_slice: &[u8]) -> Result<Self, DeserializeError>
Deserialize a Module from a slice. The slice must have the following format: RKYV serialization (any length) + POS (8 bytes)
sourcepub fn deserialize_from_archive(
archived: &ArchivedModuleMetadata,
) -> Result<Self, DeserializeError>
pub fn deserialize_from_archive( archived: &ArchivedModuleMetadata, ) -> Result<Self, DeserializeError>
Deserialize a compilation module from an archive
Trait Implementations§
source§impl Archive for ModuleMetadatawhere
CompileModuleInfo: Archive,
String: Archive,
Box<[OwnedDataInitializer]>: Archive,
PrimaryMap<LocalFunctionIndex, u64>: Archive,
u64: Archive,
impl Archive for ModuleMetadatawhere
CompileModuleInfo: Archive,
String: Archive,
Box<[OwnedDataInitializer]>: Archive,
PrimaryMap<LocalFunctionIndex, u64>: Archive,
u64: Archive,
source§type Archived = ArchivedModuleMetadata
type Archived = ArchivedModuleMetadata
source§type Resolver = ModuleMetadataResolver
type Resolver = ModuleMetadataResolver
source§impl Debug for ModuleMetadata
impl Debug for ModuleMetadata
source§impl<__D: Fallible + ?Sized> Deserialize<ModuleMetadata, __D> for Archived<ModuleMetadata>where
CompileModuleInfo: Archive,
Archived<CompileModuleInfo>: Deserialize<CompileModuleInfo, __D>,
String: Archive,
Archived<String>: Deserialize<String, __D>,
Box<[OwnedDataInitializer]>: Archive,
Archived<Box<[OwnedDataInitializer]>>: Deserialize<Box<[OwnedDataInitializer]>, __D>,
PrimaryMap<LocalFunctionIndex, u64>: Archive,
Archived<PrimaryMap<LocalFunctionIndex, u64>>: Deserialize<PrimaryMap<LocalFunctionIndex, u64>, __D>,
u64: Archive,
Archived<u64>: Deserialize<u64, __D>,
impl<__D: Fallible + ?Sized> Deserialize<ModuleMetadata, __D> for Archived<ModuleMetadata>where
CompileModuleInfo: Archive,
Archived<CompileModuleInfo>: Deserialize<CompileModuleInfo, __D>,
String: Archive,
Archived<String>: Deserialize<String, __D>,
Box<[OwnedDataInitializer]>: Archive,
Archived<Box<[OwnedDataInitializer]>>: Deserialize<Box<[OwnedDataInitializer]>, __D>,
PrimaryMap<LocalFunctionIndex, u64>: Archive,
Archived<PrimaryMap<LocalFunctionIndex, u64>>: Deserialize<PrimaryMap<LocalFunctionIndex, u64>, __D>,
u64: Archive,
Archived<u64>: Deserialize<u64, __D>,
source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<ModuleMetadata, __D::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<ModuleMetadata, __D::Error>
source§impl<__S: Fallible + ?Sized> Serialize<__S> for ModuleMetadatawhere
CompileModuleInfo: Serialize<__S>,
String: Serialize<__S>,
Box<[OwnedDataInitializer]>: Serialize<__S>,
PrimaryMap<LocalFunctionIndex, u64>: Serialize<__S>,
u64: Serialize<__S>,
impl<__S: Fallible + ?Sized> Serialize<__S> for ModuleMetadatawhere
CompileModuleInfo: Serialize<__S>,
String: Serialize<__S>,
Box<[OwnedDataInitializer]>: Serialize<__S>,
PrimaryMap<LocalFunctionIndex, u64>: Serialize<__S>,
u64: Serialize<__S>,
Auto Trait Implementations§
impl Freeze for ModuleMetadata
impl RefUnwindSafe for ModuleMetadata
impl Send for ModuleMetadata
impl Sync for ModuleMetadata
impl Unpin for ModuleMetadata
impl UnwindSafe for ModuleMetadata
Blanket Implementations§
source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive
, it may be unsized. Read more