comparison gen/typinf.cpp @ 1382:a0a4d4dac1a4

Renamed !TypeInfoBuilder to !RTTIBuilder.
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Sun, 17 May 2009 15:20:58 +0200
parents a5d0e04298a8
children 638d16625da2
comparison
equal deleted inserted replaced
1381:44c8eef6e6ee 1382:a0a4d4dac1a4
371 void TypeInfoTypedefDeclaration::llvmDefine() 371 void TypeInfoTypedefDeclaration::llvmDefine()
372 { 372 {
373 Logger::println("TypeInfoTypedefDeclaration::llvmDefine() %s", toChars()); 373 Logger::println("TypeInfoTypedefDeclaration::llvmDefine() %s", toChars());
374 LOG_SCOPE; 374 LOG_SCOPE;
375 375
376 TypeInfoBuilder b(Type::typeinfotypedef); 376 RTTIBuilder b(Type::typeinfotypedef);
377 377
378 assert(tinfo->ty == Ttypedef); 378 assert(tinfo->ty == Ttypedef);
379 TypeTypedef *tc = (TypeTypedef *)tinfo; 379 TypeTypedef *tc = (TypeTypedef *)tinfo;
380 TypedefDeclaration *sd = tc->sym; 380 TypedefDeclaration *sd = tc->sym;
381 381
409 void TypeInfoEnumDeclaration::llvmDefine() 409 void TypeInfoEnumDeclaration::llvmDefine()
410 { 410 {
411 Logger::println("TypeInfoEnumDeclaration::llvmDefine() %s", toChars()); 411 Logger::println("TypeInfoEnumDeclaration::llvmDefine() %s", toChars());
412 LOG_SCOPE; 412 LOG_SCOPE;
413 413
414 TypeInfoBuilder b(Type::typeinfoenum); 414 RTTIBuilder b(Type::typeinfoenum);
415 415
416 assert(tinfo->ty == Tenum); 416 assert(tinfo->ty == Tenum);
417 TypeEnum *tc = (TypeEnum *)tinfo; 417 TypeEnum *tc = (TypeEnum *)tinfo;
418 EnumDeclaration *sd = tc->sym; 418 EnumDeclaration *sd = tc->sym;
419 419
447 void TypeInfoPointerDeclaration::llvmDefine() 447 void TypeInfoPointerDeclaration::llvmDefine()
448 { 448 {
449 Logger::println("TypeInfoPointerDeclaration::llvmDefine() %s", toChars()); 449 Logger::println("TypeInfoPointerDeclaration::llvmDefine() %s", toChars());
450 LOG_SCOPE; 450 LOG_SCOPE;
451 451
452 TypeInfoBuilder b(Type::typeinfopointer); 452 RTTIBuilder b(Type::typeinfopointer);
453 // TypeInfo base 453 // TypeInfo base
454 b.push_typeinfo(tinfo->nextOf()); 454 b.push_typeinfo(tinfo->nextOf());
455 // finish 455 // finish
456 b.finalize(ir.irGlobal); 456 b.finalize(ir.irGlobal);
457 } 457 }
461 void TypeInfoArrayDeclaration::llvmDefine() 461 void TypeInfoArrayDeclaration::llvmDefine()
462 { 462 {
463 Logger::println("TypeInfoArrayDeclaration::llvmDefine() %s", toChars()); 463 Logger::println("TypeInfoArrayDeclaration::llvmDefine() %s", toChars());
464 LOG_SCOPE; 464 LOG_SCOPE;
465 465
466 TypeInfoBuilder b(Type::typeinfoarray); 466 RTTIBuilder b(Type::typeinfoarray);
467 // TypeInfo base 467 // TypeInfo base
468 b.push_typeinfo(tinfo->nextOf()); 468 b.push_typeinfo(tinfo->nextOf());
469 // finish 469 // finish
470 b.finalize(ir.irGlobal); 470 b.finalize(ir.irGlobal);
471 } 471 }
478 LOG_SCOPE; 478 LOG_SCOPE;
479 479
480 assert(tinfo->ty == Tsarray); 480 assert(tinfo->ty == Tsarray);
481 TypeSArray *tc = (TypeSArray *)tinfo; 481 TypeSArray *tc = (TypeSArray *)tinfo;
482 482
483 TypeInfoBuilder b(Type::typeinfostaticarray); 483 RTTIBuilder b(Type::typeinfostaticarray);
484 484
485 // value typeinfo 485 // value typeinfo
486 b.push_typeinfo(tc->nextOf()); 486 b.push_typeinfo(tc->nextOf());
487 487
488 // length 488 // length
500 LOG_SCOPE; 500 LOG_SCOPE;
501 501
502 assert(tinfo->ty == Taarray); 502 assert(tinfo->ty == Taarray);
503 TypeAArray *tc = (TypeAArray *)tinfo; 503 TypeAArray *tc = (TypeAArray *)tinfo;
504 504
505 TypeInfoBuilder b(Type::typeinfoassociativearray); 505 RTTIBuilder b(Type::typeinfoassociativearray);
506 506
507 // value typeinfo 507 // value typeinfo
508 b.push_typeinfo(tc->nextOf()); 508 b.push_typeinfo(tc->nextOf());
509 509
510 // key typeinfo 510 // key typeinfo
519 void TypeInfoFunctionDeclaration::llvmDefine() 519 void TypeInfoFunctionDeclaration::llvmDefine()
520 { 520 {
521 Logger::println("TypeInfoFunctionDeclaration::llvmDefine() %s", toChars()); 521 Logger::println("TypeInfoFunctionDeclaration::llvmDefine() %s", toChars());
522 LOG_SCOPE; 522 LOG_SCOPE;
523 523
524 TypeInfoBuilder b(Type::typeinfofunction); 524 RTTIBuilder b(Type::typeinfofunction);
525 // TypeInfo base 525 // TypeInfo base
526 b.push_typeinfo(tinfo->nextOf()); 526 b.push_typeinfo(tinfo->nextOf());
527 // finish 527 // finish
528 b.finalize(ir.irGlobal); 528 b.finalize(ir.irGlobal);
529 } 529 }
536 LOG_SCOPE; 536 LOG_SCOPE;
537 537
538 assert(tinfo->ty == Tdelegate); 538 assert(tinfo->ty == Tdelegate);
539 Type* ret_type = tinfo->nextOf()->nextOf(); 539 Type* ret_type = tinfo->nextOf()->nextOf();
540 540
541 TypeInfoBuilder b(Type::typeinfodelegate); 541 RTTIBuilder b(Type::typeinfodelegate);
542 // TypeInfo base 542 // TypeInfo base
543 b.push_typeinfo(ret_type); 543 b.push_typeinfo(ret_type);
544 // finish 544 // finish
545 b.finalize(ir.irGlobal); 545 b.finalize(ir.irGlobal);
546 } 546 }
580 } 580 }
581 581
582 sd->codegen(Type::sir); 582 sd->codegen(Type::sir);
583 IrStruct* irstruct = sd->ir.irStruct; 583 IrStruct* irstruct = sd->ir.irStruct;
584 584
585 TypeInfoBuilder b(Type::typeinfostruct); 585 RTTIBuilder b(Type::typeinfostruct);
586 586
587 // char[] name 587 // char[] name
588 b.push_string(sd->toPrettyChars()); 588 b.push_string(sd->toPrettyChars());
589 589
590 // void[] init 590 // void[] init
668 // make sure class is resolved 668 // make sure class is resolved
669 assert(tinfo->ty == Tclass); 669 assert(tinfo->ty == Tclass);
670 TypeClass *tc = (TypeClass *)tinfo; 670 TypeClass *tc = (TypeClass *)tinfo;
671 tc->sym->codegen(Type::sir); 671 tc->sym->codegen(Type::sir);
672 672
673 TypeInfoBuilder b(Type::typeinfoclass); 673 RTTIBuilder b(Type::typeinfoclass);
674 674
675 // TypeInfo base 675 // TypeInfo base
676 b.push_classinfo(tc->sym); 676 b.push_classinfo(tc->sym);
677 677
678 // finish 678 // finish
689 // make sure interface is resolved 689 // make sure interface is resolved
690 assert(tinfo->ty == Tclass); 690 assert(tinfo->ty == Tclass);
691 TypeClass *tc = (TypeClass *)tinfo; 691 TypeClass *tc = (TypeClass *)tinfo;
692 tc->sym->codegen(Type::sir); 692 tc->sym->codegen(Type::sir);
693 693
694 TypeInfoBuilder b(Type::typeinfointerface); 694 RTTIBuilder b(Type::typeinfointerface);
695 695
696 // TypeInfo base 696 // TypeInfo base
697 b.push_classinfo(tc->sym); 697 b.push_classinfo(tc->sym);
698 698
699 // finish 699 // finish
725 725
726 // build array 726 // build array
727 const LLArrayType* arrTy = LLArrayType::get(tiTy, dim); 727 const LLArrayType* arrTy = LLArrayType::get(tiTy, dim);
728 LLConstant* arrC = llvm::ConstantArray::get(arrTy, arrInits); 728 LLConstant* arrC = llvm::ConstantArray::get(arrTy, arrInits);
729 729
730 TypeInfoBuilder b(Type::typeinfotypelist); 730 RTTIBuilder b(Type::typeinfotypelist);
731 731
732 // push TypeInfo[] 732 // push TypeInfo[]
733 b.push_array(arrC, dim, Type::typeinfo->type, NULL); 733 b.push_array(arrC, dim, Type::typeinfo->type, NULL);
734 734
735 // finish 735 // finish
743 void TypeInfoConstDeclaration::llvmDefine() 743 void TypeInfoConstDeclaration::llvmDefine()
744 { 744 {
745 Logger::println("TypeInfoConstDeclaration::llvmDefine() %s", toChars()); 745 Logger::println("TypeInfoConstDeclaration::llvmDefine() %s", toChars());
746 LOG_SCOPE; 746 LOG_SCOPE;
747 747
748 TypeInfoBuilder b(Type::typeinfoconst); 748 RTTIBuilder b(Type::typeinfoconst);
749 // TypeInfo base 749 // TypeInfo base
750 b.push_typeinfo(tinfo->mutableOf()->merge()); 750 b.push_typeinfo(tinfo->mutableOf()->merge());
751 // finish 751 // finish
752 b.finalize(ir.irGlobal); 752 b.finalize(ir.irGlobal);
753 } 753 }
757 void TypeInfoInvariantDeclaration::llvmDefine() 757 void TypeInfoInvariantDeclaration::llvmDefine()
758 { 758 {
759 Logger::println("TypeInfoInvariantDeclaration::llvmDefine() %s", toChars()); 759 Logger::println("TypeInfoInvariantDeclaration::llvmDefine() %s", toChars());
760 LOG_SCOPE; 760 LOG_SCOPE;
761 761
762 TypeInfoBuilder b(Type::typeinfoinvariant); 762 RTTIBuilder b(Type::typeinfoinvariant);
763 // TypeInfo base 763 // TypeInfo base
764 b.push_typeinfo(tinfo->mutableOf()->merge()); 764 b.push_typeinfo(tinfo->mutableOf()->merge());
765 // finish 765 // finish
766 b.finalize(ir.irGlobal); 766 b.finalize(ir.irGlobal);
767 } 767 }