aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-19 22:32:31 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-19 22:32:31 +0100
commitd0a9c780ea36a0ff0b70529c1c6ab86c61a5eb0f (patch)
treea191ab3f0e8cccc29da7ac8d6f49b8ecf2228c89 /src/test/java/org
parent41008c20a7f57dbe72487aec02727edf5e624d4a (diff)
Refer to locals in call-pointer Patio instruction
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioInstructionSerializerTests.java6
-rw-r--r--src/test/java/org/shedlang/compiler/patio/instructions/Patio.java19
2 files changed, 19 insertions, 6 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioInstructionSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioInstructionSerializerTests.java
index 6efc86f7..2ce7d87c 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioInstructionSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioInstructionSerializerTests.java
@@ -3,6 +3,8 @@ package org.shedlang.compiler.patio;
import org.junit.jupiter.api.Test;
import org.shedlang.compiler.patio.instructions.Patio;
+import java.util.List;
+
import static org.shedlang.compiler.patio.PatioTesting.serialize;
import static org.zwobble.precisely.AssertThat.assertThat;
import static org.zwobble.precisely.Matchers.equalTo;
@@ -19,11 +21,11 @@ public class PatioInstructionSerializerTests {
@Test
public void canSerializeCallPointer() {
- var instruction = Patio.callPointer(2);
+ var instruction = Patio.callPointer("f", List.of("a", "b", "c"));
var string = serialize(instruction);
- assertThat(string, equalTo("(call-pointer arg-count=2)"));
+ assertThat(string, equalTo("(call-pointer \"f\" (\"a\" \"b\" \"c\"))"));
}
@Test
diff --git a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
index 31b0b012..2115fd06 100644
--- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
+++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
@@ -2,6 +2,8 @@ package org.shedlang.compiler.patio.instructions;
import org.shedlang.compiler.sources.Sources;
+import java.util.List;
+
public class Patio {
private Patio() {}
@@ -9,8 +11,17 @@ public class Patio {
return new PatioAlloc(bytes, Sources.NULL);
}
- public static PatioInstruction callPointer(int argCount) {
- return new PatioCallPointer(argCount, Sources.NULL);
+ public static PatioInstruction callPointer(
+ String functionPointer,
+ List<String> args
+ ) {
+ return new PatioCallPointer(
+ new PatioLocal(functionPointer),
+ args.stream()
+ .map(arg -> new PatioLocal(arg))
+ .toList(),
+ Sources.NULL
+ );
}
public static PatioInstruction discard() {
@@ -18,11 +29,11 @@ public class Patio {
}
public static PatioInstruction localLoad(String name) {
- return new PatioLocalLoad(name, Sources.NULL);
+ return new PatioLocalLoad(new PatioLocal(name), Sources.NULL);
}
public static PatioInstruction localStore(String name) {
- return new PatioLocalStore(name, Sources.NULL);
+ return new PatioLocalStore(new PatioLocal(name), Sources.NULL);
}
public static PatioInstruction memoryLoad(int offset) {