aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-26 18:52:00 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-27 00:29:08 +0000
commitfa664754ddf04071414d2d103402b0028af681c1 (patch)
treeca6fd7291bd6733df41f9befd50c55c8361a789f /src/main/java
parente4b51902a72b08a9feddbcd527550ddde08ecc9b (diff)
Add Patio int32 data value
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.java6
-rw-r--r--src/main/java/org/shedlang/compiler/patio/types/PatioDataValue.java2
-rw-r--r--src/main/java/org/shedlang/compiler/patio/types/PatioDataValueInt32.java10
-rw-r--r--src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java4
6 files changed, 28 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 01b9ca18..da6edbea 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
@@ -1315,6 +1315,9 @@ public class PatioToLlvm {
case PatioDataValueInt patioDataValueInt ->
patioIntValueToLlvmOperand(patioDataValueInt.value(), target);
+ case PatioDataValueInt32 patioDataValueInt32 ->
+ patioIntValueToLlvmOperand(patioDataValueInt32.value(), target);
+
case PatioDataValueStruct patioDataValueStruct ->
new LlvmOperandStructure(
patioDataValueStruct.elements().stream()
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 e15cdc23..c6ec5136 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -717,6 +717,10 @@ public class PatioToWasm {
}
}
}
+ case PatioDataValueInt32 patioDataValueInt32 -> {
+ var intValue = generateIntValue(patioDataValueInt32.value(), target);
+ bytes.putInt(intValue);
+ }
case PatioDataValueStruct patioDataValueStruct -> {
for (var element : patioDataValueStruct.elements()) {
patioDataValueToBytes(element, bytes, target);
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
index 9e208b2c..dc7f7c20 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
@@ -533,6 +533,12 @@ public class PatioSerializer {
intValueToTree(int_.value())
);
+ case PatioDataValueInt32 int32 ->
+ treeList(
+ treeIdentifier("int32"),
+ intValueToTree(int32.value())
+ );
+
case PatioDataValueStruct struct ->
treeList(
treeIdentifier("struct"),
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 8f3056a6..88873189 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, PatioDataValueStruct {
+public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueDataPointerNull, PatioDataValueInt, PatioDataValueInt32, PatioDataValueStruct {
PatioDataLayout layout();
}
diff --git a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueInt32.java b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueInt32.java
new file mode 100644
index 00000000..2206972e
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValueInt32.java
@@ -0,0 +1,10 @@
+package org.shedlang.compiler.patio.types;
+
+import org.shedlang.compiler.patio.values.PatioIntValue;
+
+public record PatioDataValueInt32(PatioIntValue value) implements PatioDataValue {
+ @Override
+ public PatioDataLayout layout() {
+ return PatioDataLayouts.INT32;
+ }
+}
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 621489b7..b70d0c40 100644
--- a/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java
+++ b/src/main/java/org/shedlang/compiler/patio/types/PatioDataValues.java
@@ -30,6 +30,10 @@ public class PatioDataValues {
return new PatioDataValueInt(new PatioIntValueLiteral(value));
}
+ public static PatioDataValue int32(int value) {
+ return new PatioDataValueInt32(new PatioIntValueLiteral(value));
+ }
+
public static PatioDataValue struct(List<PatioDataValue> elements) {
return new PatioDataValueStruct(elements);
}