comparison gen/runtime.cpp @ 209:c4c9b4ac021b trunk

[svn r225] Fixed: delete expressions no longer use llvm's free instruction, which crashes on a GC provided pointer.
author lindquist
date Wed, 14 May 2008 01:22:40 +0200
parents 9d44ec83acd1
children 7816aafeea3c
comparison
equal deleted inserted replaced
208:086e1aa99557 209:c4c9b4ac021b
281 types.push_back(classInfoTy); 281 types.push_back(classInfoTy);
282 const llvm::FunctionType* fty = llvm::FunctionType::get(objectTy, types, false); 282 const llvm::FunctionType* fty = llvm::FunctionType::get(objectTy, types, false);
283 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); 283 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M);
284 } 284 }
285 285
286 // void _d_delarray(size_t plength, void* pdata)
287 {
288 std::string fname("_d_delarray");
289 std::vector<const llvm::Type*> types;
290 types.push_back(sizeTy);
291 types.push_back(voidPtrTy);
292 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
293 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M);
294 }
295
296 // void _d_delmemory(void* p)
297 // void _d_delinterface(void* p)
298 // void _d_callfinalizer(void* p)
299 {
300 std::string fname("_d_delmemory");
301 std::string fname2("_d_delinterface");
302 std::string fname3("_d_callfinalizer");
303 std::vector<const llvm::Type*> types;
304 types.push_back(voidPtrTy);
305 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
306 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M);
307 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M);
308 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M);
309 }
310
311 // void _d_delclass(Object p)
312 {
313 std::string fname("_d_delclass");
314 std::vector<const llvm::Type*> types;
315 types.push_back(objectTy);
316 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
317 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M);
318 }
319
286 ///////////////////////////////////////////////////////////////////////////////////// 320 /////////////////////////////////////////////////////////////////////////////////////
287 ///////////////////////////////////////////////////////////////////////////////////// 321 /////////////////////////////////////////////////////////////////////////////////////
288 ///////////////////////////////////////////////////////////////////////////////////// 322 /////////////////////////////////////////////////////////////////////////////////////
289 323
290 #define ARRAY_INIT(TY,suffix) \ 324 #define ARRAY_INIT(TY,suffix) \