Mercurial > projects > ldc
diff 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 |
line wrap: on
line diff
--- a/gen/runtime.cpp Tue May 13 21:41:25 2008 +0200 +++ b/gen/runtime.cpp Wed May 14 01:22:40 2008 +0200 @@ -283,6 +283,40 @@ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); } + // void _d_delarray(size_t plength, void* pdata) + { + std::string fname("_d_delarray"); + std::vector<const llvm::Type*> types; + types.push_back(sizeTy); + types.push_back(voidPtrTy); + const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); + llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); + } + + // void _d_delmemory(void* p) + // void _d_delinterface(void* p) + // void _d_callfinalizer(void* p) + { + std::string fname("_d_delmemory"); + std::string fname2("_d_delinterface"); + std::string fname3("_d_callfinalizer"); + std::vector<const llvm::Type*> types; + types.push_back(voidPtrTy); + const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); + llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); + llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); + llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M); + } + + // void _d_delclass(Object p) + { + std::string fname("_d_delclass"); + std::vector<const llvm::Type*> types; + types.push_back(objectTy); + const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); + llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); + } + ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////