From 6c229c6b671522edde2f4de041c89449949e0820 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 26 Dec 2023 23:10:46 +0000 Subject: Generate correct type for int stores --- .../org/shedlang/compiler/backends/wasm/PatioToWasm.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/main/java') 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 00f5cd00..3389bb65 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java @@ -366,7 +366,8 @@ public class PatioToWasm { context = generateOperand(patioMemoryStore.value(), context); - context = context.addInstruction(new WasmI32Store( + context = context.addInstruction(wasmIntStore( + patioOperandToWasmValueType(patioMemoryStore.value(), context), wasmMemoryArg( patioMemoryStore.layout(), patioMemoryStore.offset(), @@ -817,6 +818,19 @@ public class PatioToWasm { } } + private static WasmInstruction wasmIntStore( + WasmValueType wasmValueType, + WasmMemoryArg memoryArg + ) { + if (wasmValueType == WasmValueType.I32) { + return new WasmI32Store(memoryArg); + } else if (wasmValueType == WasmValueType.I64) { + return new WasmI64Store(memoryArg); + } else { + throw new IllegalArgumentException("Cannot create int store for " + wasmValueType); + } + } + private static class Context { private record PatioLocalInfo( WasmLocalIndex wasmLocalIndex, -- cgit v1.2.3