aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-17 12:02:29 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-17 12:02:29 +0000
commit736b902c75ec39872180c2639a9b33d9436b7908 (patch)
tree991e022e876c2679ab3f9f0a495ff9d1b0f4e816 /src/main/java
parentc63010da8a863f1ec9ad64765413f8508ca15b3e (diff)
Add Patio data value null data ptr
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java3
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java3
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java3
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java2
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueDataPointerNull.java8
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java4
6 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java
index 7e98d814..d16dabcf 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java
@@ -1187,6 +1187,9 @@ public class LlvmPatioCodeGen {
case PatioDataValueByte patioDataValueByte ->
new LlvmOperandInt(patioDataValueByte.value());
+ case PatioDataValueDataPointerNull patioDataValueDataPointerNull ->
+ new LlvmOperandNull();
+
case PatioDataValueInt patioDataValueInt ->
new LlvmOperandInt(patioDataValueInt.value());
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java
index 17b26efa..1e22c558 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java
@@ -612,6 +612,9 @@ public class WasmPatioCodeGen {
case PatioDataValueByte patioDataValueByte -> {
bytes.put(patioDataValueByte.value());
}
+ case PatioDataValueDataPointerNull patioDataValueDataPointerNull -> {
+ bytes.putInt(0);
+ }
case PatioDataValueInt patioDataValueInt -> {
bytes.putInt(patioDataValueInt.value());
}
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java
index cc2903c5..53508766 100644
--- a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java
+++ b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java
@@ -521,6 +521,9 @@ public class PatioSerializer {
treeIdentifier(String.format("0x%02x", byte_.value()))
);
+ case PatioDataValueDataPointerNull dataPointerNull ->
+ treeList(treeIdentifier("data-ptr"), treeIdentifier("null"));
+
case PatioDataValueInt int_ ->
treeList(
treeIdentifier("int"),
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java
index 1181353e..0726ba3d 100644
--- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java
+++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java
@@ -1,5 +1,5 @@
package org.shedlang.compiler.patio.ast.types;
-public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueInt, PatioDataValueStruct {
+public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueDataPointerNull, PatioDataValueInt, PatioDataValueStruct {
PatioDataLayout layout();
}
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueDataPointerNull.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueDataPointerNull.java
new file mode 100644
index 00000000..a305d00c
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueDataPointerNull.java
@@ -0,0 +1,8 @@
+package org.shedlang.compiler.patio.ast.types;
+
+public record PatioDataValueDataPointerNull() implements PatioDataValue {
+ @Override
+ public PatioDataLayout layout() {
+ return PatioDataLayouts.DATA_POINTER;
+ }
+}
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java
index c7b1a1d3..10c09e74 100644
--- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java
+++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java
@@ -20,6 +20,10 @@ public class PatioDataValues {
return new PatioDataValueByte((byte) value);
}
+ public static PatioDataValue dataPointerNull() {
+ return new PatioDataValueDataPointerNull();
+ }
+
public static PatioDataValue int_(int value) {
return new PatioDataValueInt(value);
}