diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-26 23:10:46 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-26 23:10:46 +0000 |
| commit | 6c229c6b671522edde2f4de041c89449949e0820 (patch) | |
| tree | a13d0017f909ee4874d8ff690f81521b44854f05 /src/main/java | |
| parent | 8d7289ae30b41c32a4c8e96d17679210cedcac27 (diff) | |
Generate correct type for int stores
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java | 16 |
1 files changed, 15 insertions, 1 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 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, |
