diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-27 19:15:48 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-27 19:15:48 +0100 |
| commit | 20c96c0faeef62752b6b42f751a366d6f4b25bb0 (patch) | |
| tree | 00cb070370006a57f0b1c0d8e116ce466a3bb7af /src/main/java | |
| parent | 57c58c2e977135c06be1147cff4b731c52e4aa8e (diff) | |
Write func index placeholder value
Diffstat (limited to 'src/main/java')
2 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatModules.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatModules.java index 9052c390..da479ca9 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatModules.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatModules.java @@ -327,7 +327,7 @@ public class WasmBinaryFormatModules { public static void serializeModule(WasmModule module, OutputStream outputStream) throws IOException { var indexTable = WasmIndexTable.fromModule(module); - var writer = new WasmBinaryWriter(); + var writer = new WasmBinaryWriter(indexTable); writer.writeBytes(WASM_MAGIC); writer.writeBytes(WASM_VERSION); writeTypeSection(module.types(), writer); diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryWriter.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryWriter.java index 6636c5d1..b3edd8f7 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryWriter.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryWriter.java @@ -13,9 +13,14 @@ import java.util.*; public class WasmBinaryWriter { private final BinaryWriter writer = new BinaryWriter(); private final Map<Integer, List<WasmRelocationEntry>> relocationEntries = new HashMap<>(); + private final WasmIndexTable indexTable; private int sectionIndex = -1; private int sectionContentsStart = -1; + public WasmBinaryWriter(WasmIndexTable indexTable) { + this.indexTable = indexTable; + } + public void writeByte(int value) { writer.writeByte(value); } @@ -49,9 +54,10 @@ public class WasmBinaryWriter { } public void writeFuncIndex(WasmFuncName funcName) throws IOException { + var funcIndex = indexTable.funcIndex(funcName); writeRelocatableIndex( WasmRelocationType.FUNCTION_INDEX_LEB, - () -> writePaddedUnsignedInt32(0), + () -> writePaddedUnsignedInt32(funcIndex.value()), new WasmRelocatableIndex.FuncIndex(funcName.value()) ); } |
