aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-28 19:46:34 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-28 19:46:34 +0000
commit469d79fa4b10036bff600c50fdc8e302014653df (patch)
tree1e34fabaae612c7fe67b24239fcdcc791995d164 /src/main/java
parent07f45f7f7166bb0d3ba05e4f0da99f702429f3b6 (diff)
Add PatioDataPtrValueNull
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java3
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java4
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioSerializer.java3
-rw-r--r--src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValue.java2
-rw-r--r--src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValueNull.java4
5 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
index 726418e1..3d00e595 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
@@ -1126,6 +1126,9 @@ public class PatioToLlvm {
return switch (dataPtrValue) {
case PatioDataPtrValueDataElement dataElement ->
new LlvmVariableGlobal(dataElement.name());
+
+ case PatioDataPtrValueNull null_ ->
+ new LlvmOperandNull();
};
}
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
index 67404151..cea0c295 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -583,6 +583,10 @@ public class PatioToWasm {
wasmMemoryAddress
);
}
+
+ case PatioDataPtrValueNull patioDataPtrValueNull -> {
+ yield wasmIntConst(target.dataPointerType(), 0);
+ }
};
}
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
index 0cd422b4..c3aea9ae 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
@@ -571,6 +571,9 @@ public class PatioSerializer {
return switch (dataPtrValue) {
case PatioDataPtrValueDataElement dataElement ->
treeString(dataElement.name());
+
+ case PatioDataPtrValueNull null_ ->
+ treeIdentifier("null");
};
}
diff --git a/src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValue.java b/src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValue.java
index f6b7d14e..b970f3d0 100644
--- a/src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValue.java
+++ b/src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValue.java
@@ -1,4 +1,4 @@
package org.shedlang.compiler.patio.values;
-public sealed interface PatioDataPtrValue permits PatioDataPtrValueDataElement {
+public sealed interface PatioDataPtrValue permits PatioDataPtrValueDataElement, PatioDataPtrValueNull {
}
diff --git a/src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValueNull.java b/src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValueNull.java
new file mode 100644
index 00000000..34b504bf
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/patio/values/PatioDataPtrValueNull.java
@@ -0,0 +1,4 @@
+package org.shedlang.compiler.patio.values;
+
+public record PatioDataPtrValueNull() implements PatioDataPtrValue {
+}