aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java24
1 files changed, 16 insertions, 8 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 e4ed6101..9e5f2f45 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -709,15 +709,18 @@ public class PatioToWasm {
Context context
) {
// 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 switch (operand) {
+ case PatioBool patioBool ->
+ patioTypeToWasmValueType(PatioTypes.BOOL, context.platformTarget);
+ case PatioDataPtr patioDataPtr ->
+ patioTypeToWasmValueType(PatioTypes.DATA_POINTER, context.platformTarget);
+ case PatioFunctionPtr patioFunctionPtr ->
+ patioTypeToWasmValueType(PatioTypes.FUNCTION_POINTER, context.platformTarget);
+ case PatioInt patioInt ->
+ patioTypeToWasmValueType(PatioTypes.INT, context.platformTarget);
+ case PatioLocalRef patioLocalRef ->
+ context.wasmLocalType(patioLocalRef);
};
- return patioTypeToWasmValueType(patioType, context.platformTarget);
}
private static WasmValueType patioTypeToWasmValueType(
@@ -887,6 +890,11 @@ public class PatioToWasm {
return this.patioLocalNameToInfo.get(patioLocalRef.name()).wasmLocalIndex;
}
+ public WasmValueType wasmLocalType(PatioLocalRef patioLocalRef) {
+ return this.patioLocalNameToInfo.get(patioLocalRef.name()).wasmType;
+ }
+
+
public Context enterBlockInstruction() {
return new Context(
this.platformTarget,