Mercurial > projects > ldc
comparison gen/runtime.cpp @ 591:e6bcc4d9e5ff
Add _d_newarrayvT and _d_newarraymvT to create arrays without initialization.
Adjust DtoNewDynArray to use DtoArrayInit for initialization of new arrays.
Make Type::tvoid->defaultInit() not error.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sun, 14 Sep 2008 10:13:50 +0200 |
parents | 192b82878b78 |
children | df196c8dea26 |
comparison
equal
deleted
inserted
replaced
590:1ecb43102d12 | 591:e6bcc4d9e5ff |
---|---|
235 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); | 235 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); |
236 } | 236 } |
237 | 237 |
238 // void* _d_newarrayT(TypeInfo ti, size_t length) | 238 // void* _d_newarrayT(TypeInfo ti, size_t length) |
239 // void* _d_newarrayiT(TypeInfo ti, size_t length) | 239 // void* _d_newarrayiT(TypeInfo ti, size_t length) |
240 // void* _d_newarrayvT(TypeInfo ti, size_t length) | |
240 { | 241 { |
241 std::string fname("_d_newarrayT"); | 242 std::string fname("_d_newarrayT"); |
242 std::string fname2("_d_newarrayiT"); | 243 std::string fname2("_d_newarrayiT"); |
244 std::string fname3("_d_newarrayvT"); | |
243 std::vector<const LLType*> types; | 245 std::vector<const LLType*> types; |
244 types.push_back(typeInfoTy); | 246 types.push_back(typeInfoTy); |
245 types.push_back(sizeTy); | 247 types.push_back(sizeTy); |
246 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); | 248 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); |
247 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); | 249 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); |
248 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); | 250 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); |
251 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M); | |
249 } | 252 } |
250 | 253 |
251 // void* _d_newarraymT(TypeInfo ti, size_t length, size_t* dims) | 254 // void* _d_newarraymT(TypeInfo ti, size_t length, size_t* dims) |
252 // void* _d_newarraymiT(TypeInfo ti, size_t length, size_t* dims) | 255 // void* _d_newarraymiT(TypeInfo ti, size_t length, size_t* dims) |
256 // void* _d_newarraymvT(TypeInfo ti, size_t length, size_t* dims) | |
253 { | 257 { |
254 std::string fname("_d_newarraymT"); | 258 std::string fname("_d_newarraymT"); |
255 std::string fname2("_d_newarraymiT"); | 259 std::string fname2("_d_newarraymiT"); |
260 std::string fname3("_d_newarraymvT"); | |
256 std::vector<const LLType*> types; | 261 std::vector<const LLType*> types; |
257 types.push_back(typeInfoTy); | 262 types.push_back(typeInfoTy); |
258 types.push_back(sizeTy); | 263 types.push_back(sizeTy); |
259 types.push_back(rt_ptr(sizeTy)); | 264 types.push_back(rt_ptr(sizeTy)); |
260 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); | 265 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); |
261 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); | 266 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); |
262 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); | 267 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); |
268 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M); | |
263 } | 269 } |
264 | 270 |
265 // void* _d_arraysetlengthT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) | 271 // void* _d_arraysetlengthT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) |
266 // void* _d_arraysetlengthiT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) | 272 // void* _d_arraysetlengthiT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) |
267 { | 273 { |