aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-24 23:01:33 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-24 23:06:29 +0100
commit5e15348d603b824f7d8725cb33852881294935ab (patch)
treef4c2a17a7a3d18c687c27a16802a9951925bc8fb /src/main/java
parent812f1c44f064c797687e739b8c722d9f528ecef6 (diff)
Add WasmExpression
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/instructions/WasmExpression.java6
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/modules/WasmFunction.java4
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructions.java6
3 files changed, 11 insertions, 5 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/instructions/WasmExpression.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/instructions/WasmExpression.java
new file mode 100644
index 00000000..ef0969e5
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/instructions/WasmExpression.java
@@ -0,0 +1,6 @@
+package org.shedlang.compiler.backends.wasm.structure.ast.instructions;
+
+import java.util.List;
+
+public record WasmExpression(List<WasmInstruction> instructions) {
+}
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/modules/WasmFunction.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/modules/WasmFunction.java
index 2e5cf592..b63e6fc2 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/modules/WasmFunction.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/ast/modules/WasmFunction.java
@@ -1,6 +1,6 @@
package org.shedlang.compiler.backends.wasm.structure.ast.modules;
-import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmInstruction;
+import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmExpression;
import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmFuncType;
import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmValueType;
@@ -11,7 +11,7 @@ public record WasmFunction(
List<WasmLocal> params,
List<WasmLocal> locals,
List<WasmValueType> resultTypes,
- List<WasmInstruction> body
+ WasmExpression body
) {
public WasmFuncType type() {
return new WasmFuncType(
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructions.java b/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructions.java
index 58d3d28c..3ed6b618 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructions.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructions.java
@@ -1,12 +1,12 @@
package org.shedlang.compiler.backends.wasm.structure.binary;
import org.shedlang.compiler.backends.wasm.structure.BinaryWriter;
+import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmExpression;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmI32Const;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmI64Const;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmInstruction;
import java.io.IOException;
-import java.util.List;
public class WasmBinaryFormatInstructions {
// Corresponds to https://webassembly.github.io/spec/core/binary/instructions.html
@@ -33,10 +33,10 @@ public class WasmBinaryFormatInstructions {
// == Expressions ==
static void writeExpression(
- List<WasmInstruction> instructions,
+ WasmExpression expression,
BinaryWriter writer
) throws IOException {
- for (var instruction : instructions) {
+ for (var instruction : expression.instructions()) {
writeInstruction(instruction, writer);
}
writer.writeByte(0x0b);