aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-28 19:49:37 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-28 19:49:37 +0000
commit6cd133fc114b2f88497579e8ef4ef629697dbd26 (patch)
tree9634cbc64672177e3281f0205b2e8eefa831eb47 /src/main/java
parent469d79fa4b10036bff600c50fdc8e302014653df (diff)
Replace PatioDataValueDataPointerNull with PatioDataValuedataPointer
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java11
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioSerializer.java7
-rw-r--r--src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java2
-rw-r--r--src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java10
-rw-r--r--src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java8
-rw-r--r--src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java3
7 files changed, 28 insertions, 15 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 3d00e595..7f7a8ba4 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
@@ -1302,7 +1302,7 @@ public class PatioToLlvm {
case PatioDataValueByte patioDataValueByte ->
new LlvmOperandInt(patioDataValueByte.value());
- case PatioDataValueDataPointerNull patioDataValueDataPointerNull ->
+ case PatioDataValueDataPointer patioDataValueDataPointer ->
new LlvmOperandNull();
case PatioDataValueInt patioDataValueInt ->
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 cea0c295..4070b25e 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -725,8 +725,15 @@ public class PatioToWasm {
case PatioDataValueByte patioDataValueByte -> {
bytes.put(patioDataValueByte.value());
}
- case PatioDataValueDataPointerNull patioDataValueDataPointerNull -> {
- bytes.putInt(0);
+ case PatioDataValueDataPointer patioDataValueDataPointer -> {
+ switch (patioDataValueDataPointer.value()) {
+ case PatioDataPtrValueDataElement dataElement -> {
+ throw new UnsupportedOperationException("TODO");
+ }
+ case PatioDataPtrValueNull null_ -> {
+ bytes.putInt(0);
+ }
+ };
}
case PatioDataValueInt patioDataValueInt -> {
var intValue = generateIntValue(patioDataValueInt.value(), target);
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
index c3aea9ae..6d60adfd 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
@@ -540,8 +540,11 @@ public class PatioSerializer {
treeIdentifier(String.format("0x%02x", byte_.value()))
);
- case PatioDataValueDataPointerNull dataPointerNull ->
- treeList(treeIdentifier("data-ptr"), treeIdentifier("null"));
+ case PatioDataValueDataPointer dataPointer ->
+ treeList(
+ treeIdentifier("data-ptr"),
+ dataPtrValueToTree(dataPointer.value())
+ );
case PatioDataValueInt int_ ->
treeList(
diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java
index 88873189..6423e844 100644
--- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java
+++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java
@@ -1,5 +1,5 @@
package org.shedlang.compiler.patio.types;
-public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueDataPointerNull, PatioDataValueInt, PatioDataValueInt32, PatioDataValueStruct {
+public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueDataPointer, PatioDataValueInt, PatioDataValueInt32, PatioDataValueStruct {
PatioDataLayout layout();
}
diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java
new file mode 100644
index 00000000..8f4a8345
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointer.java
@@ -0,0 +1,10 @@
+package org.shedlang.compiler.patio.types;
+
+import org.shedlang.compiler.patio.values.PatioDataPtrValue;
+
+public record PatioDataValueDataPointer(PatioDataPtrValue value) implements PatioDataValue {
+ @Override
+ public PatioDataLayout layout() {
+ return PatioDataLayouts.DATA_POINTER;
+ }
+}
diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java
deleted file mode 100644
index 214ee35d..00000000
--- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueDataPointerNull.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package org.shedlang.compiler.patio.types;
-
-public record PatioDataValueDataPointerNull() implements PatioDataValue {
- @Override
- public PatioDataLayout layout() {
- return PatioDataLayouts.DATA_POINTER;
- }
-}
diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java
index b70d0c40..731fa340 100644
--- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java
+++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java
@@ -1,5 +1,6 @@
package org.shedlang.compiler.patio.types;
+import org.shedlang.compiler.patio.values.PatioDataPtrValueNull;
import org.shedlang.compiler.patio.values.PatioIntValueLiteral;
import java.util.List;
@@ -23,7 +24,7 @@ public class PatioDataValues {
}
public static PatioDataValue dataPointerNull() {
- return new PatioDataValueDataPointerNull();
+ return new PatioDataValueDataPointer(new PatioDataPtrValueNull());
}
public static PatioDataValue int_(int value) {