aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-11 10:28:05 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-11 10:28:05 +0100
commitc5bf0550ad465bed16dab1d9c8bed8d2a036d6ab (patch)
tree6547c9f88be663377fa56aa297f6836a41441d66 /src/main/java
parentea29df54d21ccfd8fcf93bac37f3b57bad327b13 (diff)
Add push-unit instruction
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java5
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java2
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/instructions/PushUnitInstruction.java6
3 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
index 1acb949a..70959410 100644
--- a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
+++ b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
@@ -109,6 +109,11 @@ public class InstructionSerializer {
treeIdentifier("push-string"),
treeString(pushStringInstruction.value())
);
+
+ case PushUnitInstruction pushUnitInstruction ->
+ treeList(
+ treeIdentifier("push-unit")
+ );
};
}
diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java
index 0cd97c83..fde83eed 100644
--- a/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java
+++ b/src/main/java/org/shedlang/compiler/stackir/instructions/Instruction.java
@@ -3,7 +3,7 @@ package org.shedlang.compiler.stackir.instructions;
import org.shedlang.compiler.sources.Source;
public sealed interface Instruction
- permits CallInstruction, DefineFunctionInstruction, DiscardInstruction, LocalLoadInstruction, LocalStoreInstruction, ModuleExportInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction {
+ permits CallInstruction, DefineFunctionInstruction, DiscardInstruction, LocalLoadInstruction, LocalStoreInstruction, ModuleExportInstruction, PushBoolInstruction, PushIntInstruction, PushStringInstruction, PushUnitInstruction {
Source source();
}
diff --git a/src/main/java/org/shedlang/compiler/stackir/instructions/PushUnitInstruction.java b/src/main/java/org/shedlang/compiler/stackir/instructions/PushUnitInstruction.java
new file mode 100644
index 00000000..c7c306c4
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/stackir/instructions/PushUnitInstruction.java
@@ -0,0 +1,6 @@
+package org.shedlang.compiler.stackir.instructions;
+
+import org.shedlang.compiler.sources.Source;
+
+public record PushUnitInstruction(Source source) implements Instruction {
+}