aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-19 20:40:52 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-19 20:40:52 +0100
commit99f714d9a1037a3fab0995ce3414206258e68d05 (patch)
tree289df77fb44a56409e1fcf77c45c9e7afc727fb5 /src/main/java
parent5900599a7f1cd0dfa5ba269e81f641142511cc57 (diff)
Generate Patio IR for discard
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java b/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java
index ed180aba..f19e88ba 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioCodeGen.java
@@ -1,4 +1,22 @@
package org.shedlang.compiler.patio;
+import org.pcollections.PVector;
+import org.shedlang.compiler.patio.instructions.PatioDiscard;
+import org.shedlang.compiler.patio.instructions.PatioInstruction;
+import org.shedlang.compiler.stackir.instructions.DiscardInstruction;
+import org.shedlang.compiler.stackir.instructions.Instruction;
+import org.shedlang.compiler.util.P;
+
public class PatioCodeGen {
+ private PatioCodeGen() {}
+
+ public static PVector<PatioInstruction> generateInstruction(Instruction stackIrInstruction) {
+ return switch (stackIrInstruction) {
+ case DiscardInstruction discard ->
+ P.vector(new PatioDiscard(discard.source()));
+
+ default ->
+ throw new IllegalStateException("Unexpected value: " + stackIrInstruction);
+ };
+ }
}