aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-21 23:41:55 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-21 23:41:55 +0100
commit0984cad6e314800cf1bc3fe604e1e48f0ed85ed7 (patch)
treee8a5d9017def221e48b39ddc25c8550c0876d353 /src/main/java
parent3b038d3e9058ea1683b19c58c397881e0b425088 (diff)
Move import identifier onto function
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/WasmBinaryFormat.java15
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImport.java1
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/imports/WasmImportDescriptor.java2
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 {}
}