From 3988b64762f7b45a766275f77f73823a2c03c3ef Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 25 Jun 2023 16:01:37 +0100 Subject: Clarify shed locals in LlvmCodeGenContext --- .../compiler/backends/llvm/LlvmCodeGen.java | 6 +++--- .../backends/llvm/LlvmCodeGenClosures.java | 4 ++-- .../compiler/backends/llvm/LlvmCodeGenContext.java | 24 +++++++++++----------- 3 files changed, 17 insertions(+), 17 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGen.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGen.java index e0060e9d..de92b4e6 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGen.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGen.java @@ -88,7 +88,7 @@ public class LlvmCodeGen { false, false )) - .addLocal("print", new LlvmOperandPtrToInt( + .addShedLocal("print", new LlvmOperandPtrToInt( new LlvmVariableGlobal("shed__runtime__print_closure"), LlvmCodeGenTypes.VALUE_TYPE )); @@ -146,14 +146,14 @@ public class LlvmCodeGen { context.pop().context(); case LocalLoadInstruction localLoad -> - context.push(context.local(localLoad.name())); + context.push(context.shedLocal(localLoad.name())); case LocalStoreInstruction localStore -> { var result = context.pop(); var value = result.value(); context = result.context(); - yield context.addLocal(localStore.name(), value); + yield context.addShedLocal(localStore.name(), value); } case NamespaceFieldStoreInstruction namespaceFieldStore -> { diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenClosures.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenClosures.java index 88849d2a..d41298bc 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenClosures.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenClosures.java @@ -328,7 +328,7 @@ public class LlvmCodeGenClosures { return context.addInstruction(new LlvmStore( LlvmCodeGenTypes.VALUE_TYPE, - context.local(freeVariable.name()), + context.shedLocal(freeVariable.name()), closureEnvironmentPointer )); } @@ -361,7 +361,7 @@ public class LlvmCodeGenClosures { closureFreeVariablePointer )); - return context.addLocal(freeVariable.name(), closureFreeVariable); + return context.addShedLocal(freeVariable.name(), closureFreeVariable); } private static LlvmCodeGenResult getClosureFreeVariablePointer( diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenContext.java index 60137e9d..90d72969 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenContext.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenContext.java @@ -20,7 +20,7 @@ import java.util.Optional; public record LlvmCodeGenContext( TypeInfo typeInfo, PStack stack, - PMap locals, + PMap shedLocalNameToOperand, PVector basicBlocks, PVector instructions, POrderedMap topLevelEntitiesByName, @@ -44,7 +44,7 @@ public record LlvmCodeGenContext( return new LlvmCodeGenContext( typeInfo, stack.plus(operand), - locals, + shedLocalNameToOperand, basicBlocks, instructions, topLevelEntitiesByName, @@ -56,7 +56,7 @@ public record LlvmCodeGenContext( return new LlvmCodeGenContext( typeInfo, stack.minus(0), - locals, + shedLocalNameToOperand, basicBlocks, instructions, topLevelEntitiesByName, @@ -64,11 +64,11 @@ public record LlvmCodeGenContext( ).toResult(stack.get(0)); } - public LlvmCodeGenContext addLocal(String name, LlvmOperand value) { + public LlvmCodeGenContext addShedLocal(String name, LlvmOperand value) { return new LlvmCodeGenContext( typeInfo, stack, - locals.plus(name, value), + shedLocalNameToOperand.plus(name, value), basicBlocks, instructions, topLevelEntitiesByName, @@ -76,8 +76,8 @@ public record LlvmCodeGenContext( ); } - public LlvmOperand local(String name) { - var local = locals.get(name); + public LlvmOperand shedLocal(String name) { + var local = shedLocalNameToOperand.get(name); if (local == null) { // TODO: better error throw new RuntimeException("unrecognised local: " + name); @@ -90,7 +90,7 @@ public record LlvmCodeGenContext( return new LlvmCodeGenContext( typeInfo, stack, - locals, + shedLocalNameToOperand, basicBlocks, instructions.plus(instruction), topLevelEntitiesByName, @@ -104,7 +104,7 @@ public record LlvmCodeGenContext( return new LlvmCodeGenContext( typeInfo, stack, - locals, + shedLocalNameToOperand, basicBlocks.plus(new LlvmBasicBlock( Optional.empty(), instructions, @@ -135,7 +135,7 @@ public record LlvmCodeGenContext( return new LlvmCodeGenContext( typeInfo, stack, - locals, + shedLocalNameToOperand, basicBlocks, instructions, topLevelEntitiesByName.plus(topLevelEntity.name(), topLevelEntity), @@ -191,7 +191,7 @@ public record LlvmCodeGenContext( return new LlvmCodeGenContext( typeInfo, stack, - locals, + shedLocalNameToOperand, basicBlocks, instructions, topLevelEntitiesByName, @@ -221,7 +221,7 @@ public record LlvmCodeGenContext( return new LlvmCodeGenContext( typeInfo, stack, - locals, + shedLocalNameToOperand, basicBlocks, instructions, functionContext.topLevelEntitiesByName, -- cgit v1.2.3