aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-17 21:39:55 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-17 21:39:55 +0100
commit9d633e579c5b0ac46eaf3958e1dad6cfe9e5f1da (patch)
treefa5914c74e32d5e79bc8e5338bed2ff5bd580973 /src/main/java
parent74b9cec87c2d5958cf2076396fa0cbb5ae1e6e02 (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.java12
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerLocalVariableSpace.java1
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"),