Add SectionBody which holds the bytes of a section.

Wire it up to CompiledModule::new().
This commit is contained in:
Nick Lewycky
2020-05-03 15:24:16 -07:00
parent ab27b7ff3a
commit db72d19f5d
4 changed files with 12 additions and 4 deletions

View File

@@ -64,7 +64,7 @@ pub use crate::function::{
};
pub use crate::jump_table::{JumpTable, JumpTableOffsets};
pub use crate::relocation::{Relocation, RelocationKind, RelocationTarget, Relocations};
pub use crate::section::{CustomSection, CustomSectionProtection, SectionIndex};
pub use crate::section::{CustomSection, CustomSectionProtection, SectionBody, SectionIndex};
pub use crate::sourceloc::SourceLoc;
pub use crate::translator::{
to_wasm_error, translate_module, FunctionBodyData, ModuleEnvironment, ModuleTranslation,

View File

@@ -41,6 +41,9 @@ pub struct CustomSection {
/// > (the start of the memory pointer).
/// > We might need to create another field for alignment in case it's
/// > needed in the future.
#[serde(with = "serde_bytes")]
pub bytes: Vec<u8>,
pub bytes: SectionBody,
}
/// The bytes in the section.
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct SectionBody(#[serde(with = "serde_bytes")] Vec<u8>);

View File

@@ -89,6 +89,7 @@ impl CompiledModule {
function_relocations: compilation.get_relocations(),
function_jt_offsets: compilation.get_jt_offsets(),
function_frame_info: frame_infos,
custom_sections: PrimaryMap::new(),
};
let serializable = SerializableModule {
compilation: serializable_compilation,

View File

@@ -3,7 +3,10 @@ use serde::ser::Serializer;
use serde::{Deserialize, Serialize};
use std::fmt;
use std::sync::Arc;
use wasmer_compiler::{CompiledFunctionFrameInfo, FunctionBody, JumpTableOffsets, Relocation};
use wasmer_compiler::{
CompiledFunctionFrameInfo, FunctionBody, JumpTableOffsets, Relocation, SectionBody,
SectionIndex,
};
use wasmer_runtime::Module;
use wasm_common::entity::PrimaryMap;
@@ -20,6 +23,7 @@ pub struct SerializableCompilation {
// to allow lazy frame_info deserialization, we convert it to it's lazy binary
// format upon serialization.
pub function_frame_info: PrimaryMap<LocalFuncIndex, SerializableFunctionFrameInfo>,
pub custom_sections: PrimaryMap<SectionIndex, SectionBody>,
}
/// Serializable struct that is able to serialize from and to