diff options
author | Matthias Benkard <mulk@minimulk.mst-plus> | 2008-09-28 21:35:04 +0200 |
---|---|---|
committer | Matthias Benkard <mulk@minimulk.mst-plus> | 2008-09-28 21:35:04 +0200 |
commit | 45e00ec3f4dd6289cd14021ef1ee35568b4928c6 (patch) | |
tree | 8ec0edf60a5d47754ca79ae75be0b78f927d4448 | |
parent | 90a3e20fcfe07c24533cce14e1d1dd8a5d611ed6 (diff) |
LLVM compiler: Simplify allocation of closures.
-rw-r--r-- | MLKCompiledClosure.m | 12 | ||||
-rw-r--r-- | MLKLLVMCompiler.mm | 2 |
2 files changed, 5 insertions, 9 deletions
diff --git a/MLKCompiledClosure.m b/MLKCompiledClosure.m index 6f61b45..fd643e3 100644 --- a/MLKCompiledClosure.m +++ b/MLKCompiledClosure.m @@ -45,18 +45,14 @@ #ifdef __OBJC_GC__ _data = NSAllocateCollectable (dataLength * sizeof(id), NSScannedOption); - for (i = 0; i < _dataLength; i++) - { - _data[i] = data[i]; - } - free (data); #else - _data = data; + _data = malloc (dataLength * sizeof(id)); +#endif + for (i = 0; i < _dataLength; i++) { - LRETAIN (_data[i]); + _data[i] = LRETAIN (data[i]); } -#endif return self; } diff --git a/MLKLLVMCompiler.mm b/MLKLLVMCompiler.mm index 4a1095e..ae9773b 100644 --- a/MLKLLVMCompiler.mm +++ b/MLKLLVMCompiler.mm @@ -615,7 +615,7 @@ static Constant builder.SetInsertPoint (outerBlock); NSArray *freeVariables = [[self freeVariables] allObjects]; - Value *closure_data = builder.CreateMalloc (PointerTy, + Value *closure_data = builder.CreateAlloca (PointerTy, ConstantInt::get(Type::Int32Ty, (uint32_t)[freeVariables count], false)); |