aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-28 17:47:06 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-28 17:47:06 +0000
commitf1251be8fb464674ef0b5ffeb645a9aab872da88 (patch)
tree28d659bd9ce18886a31504cd34272b52ec31b12f /src/test/java
parent60cf1b347241855b2741949443fc7008554a482c (diff)
Add memory-fill instruction to Patio
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java20
-rw-r--r--src/test/java/org/shedlang/compiler/patio/instructions/Patio.java8
2 files changed, 28 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
index fdd8ee65..29110e81 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java
@@ -423,6 +423,26 @@ public class PatioSerializerTests {
}
@Test
+ public void canSerializeMemoryFill() {
+ var instruction = Patio.memoryFill(
+ Patio.localRef("pointer"),
+ Patio.byteConst((byte)4),
+ Patio.intConst(20)
+ );
+
+ var string = PatioTesting.serializeInstruction(instruction);
+
+ assertThat(string, equalTo("""
+ (
+ memory-fill
+ (local "pointer")
+ (byte-const 4)
+ (int-const 20)
+ )"""
+ ));
+ }
+
+ @Test
public void canSerializeMemoryLoad() {
var instruction = Patio.memoryLoad(
Patio.localRef("destination"),
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 2ac14323..d3fce63d 100644
--- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
+++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java
@@ -236,6 +236,14 @@ public class Patio {
return new PatioLoopContinue(Sources.NULL);
}
+ public static PatioInstruction memoryFill(
+ PatioOperand pointer,
+ PatioOperand value,
+ PatioOperand length
+ ) {
+ return new PatioMemoryFill(pointer, value, length, Sources.NULL);
+ }
+
public static PatioInstruction memoryLoad(
PatioLocalRef destination,
PatioOperand pointer,