From 9d633e579c5b0ac46eaf3958e1dad6cfe9e5f1da Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 17 Jun 2023 21:39:55 +0100 Subject: Use separate variable space for free variable pointers --- .../compiler/backends/llvm/LlvmCompilerClosures.java | 12 ++++++------ .../backends/llvm/LlvmCompilerLocalVariableSpace.java | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java index 8e17ea1b..da60ea7a 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java @@ -323,14 +323,14 @@ public class LlvmCompilerClosures { Types closureTypes, LlvmCompilerContext context ) { - var closureEnvironmentPointerResult = context.generateVariableLocal( - LlvmCompilerLocalVariableSpace.CLOSURE_ENVIRONMENT_POINTER + var freeVariablePointerResult = context.generateVariableLocal( + LlvmCompilerLocalVariableSpace.CLOSURE_FREE_VARIABLE_POINTER ); - var closureEnvironmentPointer = closureEnvironmentPointerResult.value(); - context = closureEnvironmentPointerResult.context(); + var freeVariablePointer = freeVariablePointerResult.value(); + context = freeVariablePointerResult.context(); context = context.addInstruction(new LlvmGetElementPtr( - closureEnvironmentPointer, + freeVariablePointer, closureTypes.closurePointer(), closurePointer, List.of( @@ -340,6 +340,6 @@ public class LlvmCompilerClosures { ) )); - return context.toResult(closureEnvironmentPointer); + return context.toResult(freeVariablePointer); } } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerLocalVariableSpace.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerLocalVariableSpace.java index 32089fbc..511e24f4 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerLocalVariableSpace.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerLocalVariableSpace.java @@ -6,6 +6,7 @@ public enum LlvmCompilerLocalVariableSpace { CLOSURE_FUNCTION_POINTER("closureFunctionPointer"), CLOSURE_FUNCTION_POINTER_POINTER("closureFunctionPointerPointer"), CLOSURE_ENVIRONMENT_POINTER("closureEnvironmentPointer"), + CLOSURE_FREE_VARIABLE_POINTER("closureFreeVariablePointer"), FIELD_POINTER("fieldPointer"), SIZE_PTR("sizePtr"), SIZE("size"), -- cgit v1.2.3