diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-23 11:40:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-23 11:40:55 +0100 |
| commit | 473df966467c00f1744aa5bf06ee01df11809505 (patch) | |
| tree | 8a1592dceb9df5dcadba4d57e4385cd007845205 /src/main/java | |
| parent | 2c1a7017af56de72f53f5ce126ccb5580bc3e42f (diff) | |
Extract WasmPatioCodeGen::popIntoPatioLocal()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java index e7735ae3..e6fcbfcb 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java @@ -130,7 +130,7 @@ public class WasmPatioCodeGen { } case PatioBoolToInt patioBoolToInt -> - generateOperandToLocal( + generateOperandToPatioLocal( patioBoolToInt.target(), patioBoolToInt.value(), context @@ -144,8 +144,7 @@ public class WasmPatioCodeGen { context = context.addInstruction(new WasmCall(new WasmFuncName(patioCall.functionName()))); if (patioCall.target().isPresent()) { - var targetWasmLocalIndex = context.wasmLocalIndex(patioCall.target().get()); - context = context.addInstruction(new WasmLocalSet(targetWasmLocalIndex)); + context = popIntoPatioLocal(patioCall.target().get(), context); } yield context; @@ -173,14 +172,13 @@ public class WasmPatioCodeGen { wasmFuncType )); - var targetWasmLocalIndex = context.wasmLocalIndex(patioCallPointer.target()); - context = context.addInstruction(new WasmLocalSet(targetWasmLocalIndex)); + context = popIntoPatioLocal(patioCallPointer.target(), context); yield context; } case PatioDataPtrToInt patioDataPtrToInt -> - generateOperandToLocal( + generateOperandToPatioLocal( patioDataPtrToInt.target(), patioDataPtrToInt.value(), context @@ -215,8 +213,7 @@ public class WasmPatioCodeGen { context = context.addInstruction(new WasmI32Add()); - var targetWasmLocalIndex = context.wasmLocalIndex(patioIntAdd.target()); - context = context.addInstruction(new WasmLocalSet(targetWasmLocalIndex)); + context = popIntoPatioLocal(patioIntAdd.target(), context); yield context; } @@ -228,28 +225,27 @@ public class WasmPatioCodeGen { context = context.addInstruction(new WasmI32Eq()); - var targetWasmLocalIndex = context.wasmLocalIndex(patioIntEquals.target()); - context = context.addInstruction(new WasmLocalSet(targetWasmLocalIndex)); + context = popIntoPatioLocal(patioIntEquals.target(), context); yield context; } case PatioIntToBool patioIntToBool -> - generateOperandToLocal( + generateOperandToPatioLocal( patioIntToBool.target(), patioIntToBool.value(), context ); case PatioIntToDataPtr patioIntToDataPtr -> - generateOperandToLocal( + generateOperandToPatioLocal( patioIntToDataPtr.target(), patioIntToDataPtr.value(), context ); case PatioLocalStore patioLocalStore -> - generateOperandToLocal( + generateOperandToPatioLocal( patioLocalStore.target(), patioLocalStore.value(), context @@ -262,9 +258,8 @@ public class WasmPatioCodeGen { wasmMemoryArg(patioMemoryLoad.layout(), patioMemoryLoad.offset()) )); - var targetWasmLocalIndex = context.wasmLocalIndex(patioMemoryLoad.target()); - context = context.addInstruction(new WasmLocalSet(targetWasmLocalIndex)); - + context = popIntoPatioLocal(patioMemoryLoad.target(), context); + yield context; } @@ -290,19 +285,23 @@ public class WasmPatioCodeGen { }; } - private static Context generateOperandToLocal( + private static Context generateOperandToPatioLocal( PatioLocalRef target, PatioOperand value, Context context ) { context = generateOperand(value, context); - var targetWasmLocalIndex = context.wasmLocalIndex(target); - context = context.addInstruction(new WasmLocalSet(targetWasmLocalIndex)); + context = popIntoPatioLocal(target, context); return context; } + private static Context popIntoPatioLocal(PatioLocalRef target, Context context) { + var targetWasmLocalIndex = context.wasmLocalIndex(target); + return context.addInstruction(new WasmLocalSet(targetWasmLocalIndex)); + } + private static Context generateOperand( PatioOperand patioOperand, Context context |
