Wasm: Serialize WasmModule without linking info

This commit is contained in:
Brian Carroll 2022-01-08 16:12:48 +00:00
parent b8ab6af203
commit 5a39002e8b
6 changed files with 75 additions and 5 deletions

View file

@ -41,9 +41,29 @@ impl<'a> WasmModule<'a> {
self.function.add_sig(index);
}
/// Serialize the module to bytes
/// (not using Serialize trait because it's just one more thing to export)
pub fn serialize<T: SerialBuffer>(&self, buffer: &mut T) {
buffer.append_u8(0);
buffer.append_slice("asm".as_bytes());
buffer.write_unencoded_u32(Self::WASM_VERSION);
self.types.serialize(buffer);
self.import.serialize(buffer);
self.function.serialize(buffer);
self.table.serialize(buffer);
self.memory.serialize(buffer);
self.global.serialize(buffer);
self.export.serialize(buffer);
self.start.serialize(buffer);
self.element.serialize(buffer);
self.code.serialize(buffer);
self.data.serialize(buffer);
}
/// Serialize the module to bytes
/// (Mutates some data related to linking)
pub fn serialize_mut<T: SerialBuffer>(&mut self, buffer: &mut T) {
pub fn serialize_with_linker_data_mut<T: SerialBuffer>(&mut self, buffer: &mut T) {
buffer.append_u8(0);
buffer.append_slice("asm".as_bytes());
buffer.write_unencoded_u32(Self::WASM_VERSION);