Mercurial > projects > ldc
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) \ |