diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-17 21:39:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-17 21:39:55 +0100 |
| commit | 9d633e579c5b0ac46eaf3958e1dad6cfe9e5f1da (patch) | |
| tree | fa5914c74e32d5e79bc8e5338bed2ff5bd580973 /src/main/java | |
| parent | 74b9cec87c2d5958cf2076396fa0cbb5ae1e6e02 (diff) | |
Use separate variable space for free variable pointers
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerClosures.java | 12 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerLocalVariableSpace.java | 1 |
2 files changed, 7 insertions, 6 deletions
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"), |
