aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-27 11:03:17 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-27 11:03:17 +0000
commit5582721f6069ce9a0b36d19f36ef51f62acb5adc (patch)
treeda8169990fd867aa9ecfa6d7c8967abc13643c6e /src/main/java
parent21309632c9d207b42de267e3996d7703afcc0dca (diff)
Add PatioOperandConst::type()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java16
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java14
-rw-r--r--src/main/java/org/shedlang/compiler/patio/operands/PatioBoolConst.java7
-rw-r--r--src/main/java/org/shedlang/compiler/patio/operands/PatioDataPtrConst.java7
-rw-r--r--src/main/java/org/shedlang/compiler/patio/operands/PatioFunctionPtrConst.java7
-rw-r--r--src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java7
-rw-r--r--src/main/java/org/shedlang/compiler/patio/operands/PatioIntConst.java7
-rw-r--r--src/main/java/org/shedlang/compiler/patio/operands/PatioOperandConst.java4
8 files changed, 43 insertions, 26 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 d646be12..ee9e36f8 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
@@ -1067,20 +1067,8 @@ public class PatioToLlvm {
PatioToLlvmFunctionContext context
) {
return switch (patioOperand) {
- case PatioBoolConst patioBoolConst ->
- LlvmTypes.INT_1;
-
- case PatioDataPtrConst patioDataPtrConst ->
- LlvmTypes.pointer(LlvmTypes.VOID);
-
- case PatioFunctionPtrConst patioFunctionPtrConst ->
- LlvmTypes.pointer(LlvmTypes.VOID);
-
- case PatioIntConst patioIntConst ->
- context.target().patioIntType();
-
- case PatioInt32Const patioInt32Const ->
- LlvmTypes.INT_32;
+ case PatioOperandConst patioOperandConst ->
+ patioTypeToLlvmType(patioOperandConst.type(), context.target());
case PatioLocalRef patioLocalRef ->
context.patioLocalToType(patioLocalRef);
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 c6ec5136..c9d862ac 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -753,19 +753,11 @@ public class PatioToWasm {
PatioOperand operand,
Context context
) {
- // TODO: push into PatioOperand?
return switch (operand) {
- case PatioBoolConst patioBoolConst ->
- patioTypeToWasmValueType(PatioTypes.BOOL, context.target);
- case PatioDataPtrConst patioDataPtrConst ->
- patioTypeToWasmValueType(PatioTypes.DATA_POINTER, context.target);
- case PatioFunctionPtrConst patioFunctionPtrConst ->
- patioTypeToWasmValueType(PatioTypes.FUNCTION_POINTER, context.target);
- case PatioIntConst patioIntConst ->
- patioTypeToWasmValueType(PatioTypes.INT, context.target);
- case PatioInt32Const patioInt32Const ->
- patioTypeToWasmValueType(PatioTypes.INT32, context.target);
+ case PatioOperandConst patioOperandConst ->
+ patioTypeToWasmValueType(patioOperandConst.type(), context.target);
case PatioLocalRef patioLocalRef ->
+ // TODO: push into PatioOperand?
context.wasmLocalType(patioLocalRef);
};
}
diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioBoolConst.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioBoolConst.java
index c96ca2ba..941cfdbb 100644
--- a/src/main/java/org/shedlang/compiler/patio/operands/PatioBoolConst.java
+++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioBoolConst.java
@@ -1,4 +1,11 @@
package org.shedlang.compiler.patio.operands;
+import org.shedlang.compiler.patio.types.PatioType;
+import org.shedlang.compiler.patio.types.PatioTypes;
+
public record PatioBoolConst(boolean value) implements PatioOperandConst {
+ @Override
+ public PatioType type() {
+ return PatioTypes.BOOL;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioDataPtrConst.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioDataPtrConst.java
index 8af8d805..91fd72f7 100644
--- a/src/main/java/org/shedlang/compiler/patio/operands/PatioDataPtrConst.java
+++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioDataPtrConst.java
@@ -1,4 +1,11 @@
package org.shedlang.compiler.patio.operands;
+import org.shedlang.compiler.patio.types.PatioType;
+import org.shedlang.compiler.patio.types.PatioTypes;
+
public record PatioDataPtrConst(String name) implements PatioOperandConst {
+ @Override
+ public PatioType type() {
+ return PatioTypes.DATA_POINTER;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioFunctionPtrConst.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioFunctionPtrConst.java
index 1ab737b8..273f6c61 100644
--- a/src/main/java/org/shedlang/compiler/patio/operands/PatioFunctionPtrConst.java
+++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioFunctionPtrConst.java
@@ -1,4 +1,11 @@
package org.shedlang.compiler.patio.operands;
+import org.shedlang.compiler.patio.types.PatioType;
+import org.shedlang.compiler.patio.types.PatioTypes;
+
public record PatioFunctionPtrConst(String name) implements PatioOperandConst {
+ @Override
+ public PatioType type() {
+ return PatioTypes.FUNCTION_POINTER;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java
index 66b648c5..f30efef4 100644
--- a/src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java
+++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioInt32Const.java
@@ -1,5 +1,7 @@
package org.shedlang.compiler.patio.operands;
+import org.shedlang.compiler.patio.types.PatioType;
+import org.shedlang.compiler.patio.types.PatioTypes;
import org.shedlang.compiler.patio.values.PatioIntValue;
import org.shedlang.compiler.patio.values.PatioIntValueLiteral;
@@ -7,4 +9,9 @@ public record PatioInt32Const(PatioIntValue value) implements PatioOperandConst
public static PatioInt32Const of(int value) {
return new PatioInt32Const(new PatioIntValueLiteral(value));
}
+
+ @Override
+ public PatioType type() {
+ return PatioTypes.INT32;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioIntConst.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioIntConst.java
index a122a02c..818a5a10 100644
--- a/src/main/java/org/shedlang/compiler/patio/operands/PatioIntConst.java
+++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioIntConst.java
@@ -1,5 +1,7 @@
package org.shedlang.compiler.patio.operands;
+import org.shedlang.compiler.patio.types.PatioType;
+import org.shedlang.compiler.patio.types.PatioTypes;
import org.shedlang.compiler.patio.values.PatioIntValue;
import org.shedlang.compiler.patio.values.PatioIntValueLiteral;
@@ -7,4 +9,9 @@ public record PatioIntConst(PatioIntValue value) implements PatioOperandConst {
public static PatioIntConst of(int value) {
return new PatioIntConst(new PatioIntValueLiteral(value));
}
+
+ @Override
+ public PatioType type() {
+ return PatioTypes.INT;
+ }
}
diff --git a/src/main/java/org/shedlang/compiler/patio/operands/PatioOperandConst.java b/src/main/java/org/shedlang/compiler/patio/operands/PatioOperandConst.java
index 2aabab00..0a31824f 100644
--- a/src/main/java/org/shedlang/compiler/patio/operands/PatioOperandConst.java
+++ b/src/main/java/org/shedlang/compiler/patio/operands/PatioOperandConst.java
@@ -1,5 +1,7 @@
package org.shedlang.compiler.patio.operands;
-public sealed interface PatioOperandConst extends PatioOperand permits PatioBoolConst, PatioDataPtrConst, PatioFunctionPtrConst, PatioIntConst, PatioInt32Const {
+import org.shedlang.compiler.patio.types.PatioType;
+public sealed interface PatioOperandConst extends PatioOperand permits PatioBoolConst, PatioDataPtrConst, PatioFunctionPtrConst, PatioIntConst, PatioInt32Const {
+ PatioType type();
}