diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-21 23:41:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-21 23:41:55 +0100 |
| commit | 0984cad6e314800cf1bc3fe604e1e48f0ed85ed7 (patch) | |
| tree | e8a5d9017def221e48b39ddc25c8550c0876d353 /src/main/java | |
| parent | 3b038d3e9058ea1683b19c58c397881e0b425088 (diff) | |
Move import identifier onto function
Diffstat (limited to 'src/main/java')
3 files changed, 12 insertions, 6 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java index 14e31070..2ac60424 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java @@ -14,6 +14,7 @@ import java.util.HashMap; import java.util.HexFormat; import java.util.List; import java.util.Map; +import java.util.stream.Stream; public class WasmBinaryFormat { private static final byte[] WASM_MAGIC = HexFormat.of().parseHex("0061736D"); @@ -115,11 +116,17 @@ public class WasmBinaryFormat { private static void writeNameSectionFunctionNameSubsection(WasmModule module, BinaryWriter writer) throws IOException { writeSection((byte) 1, writer, () -> { + var importedFunctions = module.imports().stream() + .flatMap(import_ -> switch (import_.descriptor()) { + case WasmImportDescriptor.Func func -> Stream.of(func); + }) + .toList(); + writeVec( - module.imports(), - (importIndex, import_) -> { - writeFuncIndex(importIndex, writer); - writeString(module.imports().get(importIndex).identifier(), writer); + importedFunctions, + (funcIndex, func) -> { + writeFuncIndex(funcIndex, writer); + writeString(func.identifier(), writer); }, writer ); diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImport.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImport.java index 5f7c7768..bc576758 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImport.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImport.java @@ -3,7 +3,6 @@ package org.shedlang.compiler.backends.wasm.structure.ast.imports; public record WasmImport( String moduleName, String entityName, - String identifier, WasmImportDescriptor descriptor ) { } diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImportDescriptor.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImportDescriptor.java index 10acc19f..7b095863 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImportDescriptor.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImportDescriptor.java @@ -3,5 +3,5 @@ package org.shedlang.compiler.backends.wasm.structure.ast.imports; import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmFuncType; public sealed interface WasmImportDescriptor { - record Func(WasmFuncType type) implements WasmImportDescriptor {} + record Func(String identifier, WasmFuncType type) implements WasmImportDescriptor {} } |
