aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-23 11:40:55 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-23 11:40:55 +0100
commit473df966467c00f1744aa5bf06ee01df11809505 (patch)
tree8a1592dceb9df5dcadba4d57e4385cd007845205 /src/main/java
parent2c1a7017af56de72f53f5ce126ccb5580bc3e42f (diff)
Extract WasmPatioCodeGen::popIntoPatioLocal()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java37
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