diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-03-19 15:56:15 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-03-19 15:56:15 +0000 |
| commit | 0702b47fc0f2d22324a2d45b44fa5657c8bfeab9 (patch) | |
| tree | c87c4e583a47ac4b3ca49bc5bbcf5041ff0c06c9 /src | |
| parent | 013bed2aa9a998ae8d7973777dcce6bd89a9cdf1 (diff) | |
Remove Patio alloc-stack instruction
Diffstat (limited to 'src')
8 files changed, 1 insertions, 122 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(); } diff --git a/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java b/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java index b55755d4..b4f51813 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java @@ -99,57 +99,6 @@ public abstract class PatioExampleTests { } @Test - public void allocStack() throws IOException, InterruptedException { - var patioFunction = PatioFunctionDefinition.builder() - .withName(FUNCTION_NAME) - .withReturnType(PatioTypes.VOID) - .addLocal(Patio.val("x", PatioTypes.DATA_PTR)) - .addLocal(Patio.val("y", PatioTypes.INT)) - .addLocal(Patio.val("z", PatioTypes.INT)) - .addLocal(Patio.val("r", PatioTypes.INT)) - .addBodyInstruction(Patio.allocStack(Patio.localRef("x"), PatioDataLayouts.INT)) - .addBodyInstruction(Patio.memoryStore( - Patio.localRef("x"), - PatioDataLayouts.INT, - List.of(), - Patio.intConst(42) - )) - .addBodyInstruction(Patio.memoryLoad( - Patio.localRef("y"), - Patio.localRef("x"), - PatioDataLayouts.INT, - List.of() - )) - .addBodyInstruction(Patio.intAdd( - Patio.localRef("z"), - Patio.localRef("y"), - Patio.intConst(5) - )) - .addBodyInstruction(Patio.memoryStore( - Patio.localRef("x"), - PatioDataLayouts.INT, - List.of(), - Patio.localRef("z") - )) - .addBodyInstruction(Patio.memoryLoad( - Patio.localRef("r"), - Patio.localRef("x"), - PatioDataLayouts.INT, - List.of() - )) - .addBodyInstruction(emitInt(Patio.localRef("r"))) - .addBodyInstruction(Patio.returnVoid()) - .build(); - var patio = Patio.compilationUnit(List.of(patioFunction)); - - var result = run(patio); - - assertThat(result, isSequence( - isInt(47) - )); - } - - @Test public void block() throws IOException, InterruptedException { var patioFunction = PatioFunctionDefinition.builder() .withName(FUNCTION_NAME) diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java index f570b7fc..dcbec92f 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java @@ -139,18 +139,6 @@ public class PatioSerializerTests { // == Instructions == @Test - public void canSerializeAllocStack() { - var instruction = Patio.allocStack( - Patio.localRef("x"), - PatioDataLayouts.struct(List.of(PatioDataLayouts.INT, PatioDataLayouts.INT, PatioDataLayouts.BYTE)) - ); - - var string = PatioTesting.serializeInstruction(instruction); - - assertThat(string, equalTo("(alloc-stack (local \"x\") (struct (int int byte)))")); - } - - @Test public void canSerializeBlock() { var instruction = Patio.block( List.of( diff --git a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java index 32cdf769..6980eb2a 100644 --- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java +++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java @@ -14,10 +14,6 @@ import java.util.Optional; public class Patio { private Patio() {} - public static PatioInstruction allocStack(PatioLocalRef destination, PatioDataLayout layout) { - return new PatioAllocStack(destination, layout, Sources.NULL); - } - public static PatioBlock block( List<PatioInstruction> body, List<PatioOperand> results |
