From a5364817b1cd751832a4634e4afbd67bb668fa2e Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Mon, 1 Sep 2008 23:39:42 +0200 Subject: LLVM compiler: Add support for heap allocation of lexical variables. --- MLKLexicalContext-MLKLLVMCompilation.mm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'MLKLexicalContext-MLKLLVMCompilation.mm') diff --git a/MLKLexicalContext-MLKLLVMCompilation.mm b/MLKLexicalContext-MLKLLVMCompilation.mm index 45208ed..d3a84b3 100644 --- a/MLKLexicalContext-MLKLLVMCompilation.mm +++ b/MLKLexicalContext-MLKLLVMCompilation.mm @@ -76,12 +76,26 @@ id MLKDummyUseLLVMLexicalContext = nil; PointerType::get(PointerType::get(Type::Int8Ty, 0), 0))); } --(Instruction *) bindingCellValueForSymbol:(id)name +-(Instruction *) globalBindingValueForSymbol:(id)name { return (new IntToPtrInst (ConstantInt::get(Type::Int64Ty, - (uint64_t)[self bindingCellForSymbol:name], + (uint64_t)[self bindingForSymbol:name], false), - PointerType::get(PointerType::get(Type::Int8Ty, 0), 0))); + PointerType::get(Type::Int8Ty, 0))); +} + +-(Value *) bindingValueForSymbol:(id)name +{ + return (Value *) [[self deepPropertyForVariable:name + key:@"LLVM.variable-binding"] + pointerValue]; +} + +-(void) setBindingValue:(Value *)value forSymbol:(id)name +{ + [self setDeepProperty:[NSValue valueWithPointer:value] + forVariable:name + key:@"LLVM.variable-binding"]; } -(Value *) valueValueForSymbol:(id)name -- cgit v1.2.3