aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-26 22:10:29 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-26 22:14:19 +0000
commit72eebd7297ac2cd992fefede9a4140432a2dede6 (patch)
treef07798fe882f759083770062e615d46b32917c10 /src/main/java
parentd0919581da42074999cb92856073cfe46f90b566 (diff)
Use Patio type to determine Wasm type for Patio operand
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java12
1 files changed, 10 insertions, 2 deletions
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 fc28d310..28a384e8 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -669,8 +669,16 @@ public class PatioToWasm {
PatioOperand operand,
WasmTarget platformTarget
) {
- // TODO: handle 32-bit values on wasm64
- return platformTarget.patioIntType();
+ // TODO: push into PatioOperand?
+ var patioType = switch (operand) {
+ case PatioBool patioBool -> PatioTypes.BOOL;
+ case PatioDataPtr patioDataPtr -> PatioTypes.DATA_POINTER;
+ case PatioFunctionPtr patioFunctionPtr -> PatioTypes.FUNCTION_POINTER;
+ case PatioInt patioInt -> PatioTypes.INT;
+ // TODO: don't assume locals are all ints
+ case PatioLocalRef patioLocalRef -> PatioTypes.INT;
+ };
+ return patioTypeToWasmValueType(patioType, platformTarget);
}
private static WasmValueType patioTypeToWasmValueType(