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);
+    }
+
     /////////////////////////////////////////////////////////////////////////////////////
     /////////////////////////////////////////////////////////////////////////////////////
     /////////////////////////////////////////////////////////////////////////////////////