aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-03-19 15:56:15 +0000
committerMichael Williamson <mike@zwobble.org>2024-03-19 15:56:15 +0000
commit0702b47fc0f2d22324a2d45b44fa5657c8bfeab9 (patch)
treec87c4e583a47ac4b3ca49bc5bbcf5041ff0c06c9 /src/main/java
parent013bed2aa9a998ae8d7973777dcce6bd89a9cdf1 (diff)
Remove Patio alloc-stack instruction
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java14
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java12
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioSerializer.java7
-rw-r--r--src/main/java/org/shedlang/compiler/patio/instructions/PatioAllocStack.java21
-rw-r--r--src/main/java/org/shedlang/compiler/patio/instructions/PatioInstruction.java2
5 files changed, 1 insertions, 55 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
index dd10b2f7..75d66773 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
@@ -296,20 +296,6 @@ public class PatioToLlvm {
PatioToLlvmFunctionContext context
) {
return switch (patioInstruction) {
- case PatioAllocStack patioAllocStack -> {
- var destinationResult = context.addPatioLocalToLlvmLocal(patioAllocStack.destination());
- var destination = destinationResult.value();
- context = destinationResult.context();
-
- yield context.addInstruction(new LlvmAlloca(
- destination,
- patioDataLayoutToLlvmType(
- patioAllocStack.layout(),
- context.target()
- )
- ));
- }
-
case PatioBlock patioBlock ->
generateInstructions(patioBlock.body(), context);
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 bedfe7e7..eb21a3a4 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -150,18 +150,6 @@ public class PatioToWasm {
var target = context.target;
return switch (patioInstruction) {
- case PatioAllocStack patioAllocStack -> {
- context = context
- .addInstruction(wasmIntConst(
- target.sizeT(),
- sizeOf(patioAllocStack.layout(), target)
- ))
- .addInstruction(new WasmCall(new WasmFuncName(STACK_ALLOC_NAME)))
- .addInstruction(new WasmLocalSet(context.wasmLocalIndex(patioAllocStack.destination())));
-
- yield context;
- }
-
case PatioBlock patioBlock ->
generateInstructions(patioBlock.body(), context);
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
index 0b6b52e5..78c23ffd 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
@@ -156,13 +156,6 @@ public class PatioSerializer {
private static Tree instructionToTree(PatioInstruction instruction) {
return switch (instruction) {
- case PatioAllocStack allocStack ->
- treeList(
- treeIdentifier("alloc-stack"),
- operandToTree(allocStack.destination()),
- dataLayoutToTree(allocStack.layout())
- );
-
case PatioBlock block ->
blockToTree(block);
diff --git a/src/main/java/org/shedlang/compiler/patio/instructions/PatioAllocStack.java b/src/main/java/org/shedlang/compiler/patio/instructions/PatioAllocStack.java
deleted file mode 100644
index 5f545606..00000000
--- a/src/main/java/org/shedlang/compiler/patio/instructions/PatioAllocStack.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.shedlang.compiler.patio.instructions;
-
-import org.shedlang.compiler.patio.operands.PatioLocalRef;
-import org.shedlang.compiler.patio.types.PatioDataLayout;
-import org.shedlang.compiler.sources.Source;
-
-/**
- * Allocate space for the given data layout on the memory stack for the current
- * call frame, and store the pointer to the allocated memory in the destination
- * local.
- */
-public record PatioAllocStack(
- PatioLocalRef destination,
- PatioDataLayout layout,
- Source source
-) implements PatioInstruction {
- @Override
- public boolean isBlockTerminator() {
- return false;
- }
-}
diff --git a/src/main/java/org/shedlang/compiler/patio/instructions/PatioInstruction.java b/src/main/java/org/shedlang/compiler/patio/instructions/PatioInstruction.java
index 92119bfb..76ab6632 100644
--- a/src/main/java/org/shedlang/compiler/patio/instructions/PatioInstruction.java
+++ b/src/main/java/org/shedlang/compiler/patio/instructions/PatioInstruction.java
@@ -2,7 +2,7 @@ package org.shedlang.compiler.patio.instructions;
import org.shedlang.compiler.sources.Source;
-public sealed interface PatioInstruction permits PatioAllocStack, PatioBlock, PatioBoolToInt, PatioCall, PatioCallPointer, PatioDataPtrToInt, PatioIf, PatioIntAdd, PatioIntEquals, PatioIntNotEqual, PatioIntSub, PatioIntToBool, PatioIntToDataPtr, PatioLocalStore, PatioLoop, PatioLoopBreak, PatioLoopContinue, PatioMemoryLoad, PatioMemoryStore, PatioResume, PatioReturn, PatioReturnVoid, PatioSwitch, PatioThrow, PatioTry, PatioUnreachable, PatioVarLoad, PatioVarStore {
+public sealed interface PatioInstruction permits PatioBlock, PatioBoolToInt, PatioCall, PatioCallPointer, PatioDataPtrToInt, PatioIf, PatioIntAdd, PatioIntEquals, PatioIntNotEqual, PatioIntSub, PatioIntToBool, PatioIntToDataPtr, PatioLocalStore, PatioLoop, PatioLoopBreak, PatioLoopContinue, PatioMemoryLoad, PatioMemoryStore, PatioResume, PatioReturn, PatioReturnVoid, PatioSwitch, PatioThrow, PatioTry, PatioUnreachable, PatioVarLoad, PatioVarStore {
boolean isBlockTerminator();
Source source();
}