aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenClosures.java17
1 files changed, 9 insertions, 8 deletions
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 a68d200f..b32d69b7 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenClosures.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCodeGenClosures.java
@@ -89,16 +89,22 @@ public class LlvmCodeGenClosures {
bodyContext = functionClosurePointerResult.context();
var shedParams = Stream.concat(positionalParams.stream(), namedParams.stream()).toList();
+ var llvmParams = new ArrayList<LlvmParam>();
+ llvmParams.add(new LlvmParam(
+ closureTypes.closurePointer(),
+ functionClosurePointer.name()
+ ));
for (var shedParam : shedParams) {
var paramResult = bodyContext.generateVariableLocal(
LlvmCodeGenLocalVariableSpace.PARAM,
shedParam.name()
);
- var llvmParam = paramResult.value();
+ var llvmParamVariable = paramResult.value();
bodyContext = paramResult.context();
- bodyContext = bodyContext.addShedLocal(shedParam.name(), llvmParam);
+ bodyContext = bodyContext.addShedLocal(shedParam.name(), llvmParamVariable);
+ llvmParams.add(new LlvmParam(LlvmCodeGenTypes.VALUE_TYPE, llvmParamVariable.name()));
}
for (var freeVariable : freeVariables) {
@@ -115,12 +121,7 @@ public class LlvmCodeGenClosures {
var function = bodyContext.toFunction(
topLevelEntityName,
LlvmCodeGenTypes.VALUE_TYPE,
- List.of(
- new LlvmParam(
- closureTypes.closurePointer(),
- functionClosurePointer.name()
- )
- )
+ llvmParams
);
return bodyContext.toResult(function);
});