mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 14:24:45 +00:00
Wasm: Serialize WasmModule without linking info
This commit is contained in:
parent
b8ab6af203
commit
5a39002e8b
6 changed files with 75 additions and 5 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue