| 319 | ->setAttributes(Attr_NoAlias_3_NoCapture); | 319 | ->setAttributes(Attr_NoAlias_3_NoCapture); |
|---|
| 320 | } | 320 | } |
|---|
| 321 | | 321 | |
|---|
| 322 | // void* _d_arraysetlengthT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) | 322 | // void* _d_arraysetlengthT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) |
|---|
| 323 | // void* _d_arraysetlengthiT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) | 323 | // void* _d_arraysetlengthiT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) |
|---|
| 324 | { | 324 | { |
|---|
| 325 | std::string fname("_d_arraysetlengthT"); | 325 | std::string fname("_d_arraysetlengthT"); |
|---|
| 326 | std::string fname2("_d_arraysetlengthiT"); | 326 | std::string fname2("_d_arraysetlengthiT"); |
|---|
| 327 | std::vector<const LLType*> types; | 327 | std::vector<const LLType*> types; |
|---|
| 328 | types.push_back(typeInfoTy); | 328 | types.push_back(typeInfoTy); |
|---|
| 329 | types.push_back(sizeTy); | 329 | types.push_back(sizeTy); |
|---|
| 330 | types.push_back(sizeTy); | 330 | types.push_back(sizeTy); |
|---|
| 331 | types.push_back(voidPtrTy); | 331 | types.push_back(voidPtrTy); |
|---|
| 332 | const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); | 332 | const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); |
|---|
| 333 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); | 333 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); |
|---|
| 334 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); | 334 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); |
|---|
| 335 | } | 335 | } |
|---|
| 336 | | 336 | |
|---|
| 337 | // Object _d_allocclass(ClassInfo ci) | 337 | // Object _d_allocclass(ClassInfo ci) |
|---|
| 338 | { | 338 | { |
|---|
| 344 | std::vector<const LLType*> types; | 340 | std::vector<const LLType*> types; |
|---|
| 345 | types.push_back(classInfoTy); | 341 | types.push_back(classInfoTy); |
|---|
| 346 | const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); | 342 | const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); |
|---|
| 347 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M) | 343 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M) |
|---|
| 348 | ->setAttributes(Attr_NoAlias); | 344 | ->setAttributes(Attr_NoAlias); |
|---|
| 349 | } | 345 | } |
|---|
| 350 | | 346 | |
|---|
| 351 | // void _d_delarray(size_t plength, void* pdata) | 347 | // void _d_delarray(size_t plength, void* pdata) |
|---|
| 352 | { | 348 | { |
|---|
| 353 | std::string fname("_d_delarray"); | 349 | std::string fname("_d_delarray"); |
|---|
| 354 | std::vector<const LLType*> types; | 350 | std::vector<const LLType*> types; |
|---|
| 355 | types.push_back(sizeTy); | 351 | types.push_back(sizeTy); |
|---|
| 356 | types.push_back(voidPtrTy); | 352 | types.push_back(voidPtrTy); |
|---|
| 357 | const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); | 353 | const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); |
|---|
| 358 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); | 354 | llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); |
|---|
| 359 | } | 355 | } |
|---|
| 360 | | 356 | |
|---|
| 361 | // void _d_delmemory(void* p) | 357 | // void _d_delmemory(void* p) |
|---|
| 362 | // void _d_delinterface(void* p) | 358 | // void _d_delinterface(void* p) |
|---|
| 363 | // void _d_callfinalizer(void* p) | 359 | // void _d_callfinalizer(void* p) |
|---|