Home | History | Annotate | Download | only in AST

Lines Matching defs:Layout

1 //===--- VTableBuilder.cpp - C++ vtable layout builder --------------------===//
10 // This contains code dealing with generation of the layout of virtual tables.
73 /// Offset - the base offset of the overrider's parent in the layout class.
86 /// construction vtable, this holds the offset from the layout class to the
90 /// LayoutClass - The class we're using for layout information. Will be
97 /// MostDerivedClassLayout - the AST record layout of the most derived class.
113 /// derived class as well as the layout class.
244 const ASTRecordLayout &Layout = Context.getASTRecordLayout(Element.Class);
248 NonVirtualOffset += Layout.getBaseClassOffset(Base);
364 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
365 CharUnits Offset = Layout.getBaseClassOffset(BaseDecl);
381 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
399 BaseOffset = Layout.getBaseClassOffset(BaseDecl) + Base.getBaseOffset();
543 /// LayoutClass - The class we're using for layout information. Will be
548 /// Context - The ASTContext which we will use for layout information.
614 const ASTRecordLayout &Layout = Context.getASTRecordLayout(Base.getBase());
625 if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
626 bool PrimaryBaseIsVirtual = Layout.isPrimaryBaseVirtual();
632 assert(Layout.getVBaseClassOffset(PrimaryBase).isZero() &&
641 assert(Layout.getBaseClassOffset(PrimaryBase).isZero() &&
675 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
677 const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
682 if (PrimaryBase && !Layout.isPrimaryBaseVirtual()) {
684 assert(Layout.getBaseClassOffset(PrimaryBase).isZero() &&
731 Layout.getBaseClassOffset(BaseDecl);
770 /// ItaniumVTableBuilder - Class for building vtable layout information.
795 /// holds the offset from the layout class to the most derived class.
802 /// LayoutClass - The class we're using for layout information. Will be
807 /// Context - The ASTContext which we will use for layout information.
833 /// BaseOffsetInLayoutClass - The base offset in the layout class of this
899 /// given virtual member function, its offset in the layout class and its
942 // LayoutVTable - Layout the vtable for the given base class, including its
946 /// LayoutPrimaryAndSecondaryVTables - Layout the primary vtable for the
953 /// in the layout class.
959 /// LayoutSecondaryVTables - Layout the secondary vtables for the given base
973 /// LayoutVTablesForVirtualBases - Layout vtables for all virtual bases of the
1061 /// dumpLayout - Dump the vtable layout.
1236 /// layout.
1380 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
1381 const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
1386 if (Layout.isPrimaryBaseVirtual()) {
1387 assert(Layout.getVBaseClassOffset(PrimaryBase).isZero() &&
1401 assert(Layout.getBaseClassOffset(PrimaryBase).isZero() &&
1455 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
1457 if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
1460 if (Layout.isPrimaryBaseVirtual()) {
1461 assert(Layout.getVBaseClassOffset(PrimaryBase).isZero() &&
1476 assert(Layout.getBaseClassOffset(PrimaryBase).isZero() &&
1702 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
1703 const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
1708 if (Layout.isPrimaryBaseVirtual()) {
1709 // Check if this virtual primary base is a primary base in the layout
1724 // Layout secondary vtables.
1738 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
1739 const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase();
1763 CharUnits RelativeBaseOffset = Layout.getBaseClassOffset(BaseDecl);
1777 // Layout the primary vtable (and any secondary vtables) for this base.
1789 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
1792 if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
1795 if (Layout.isPrimaryBaseVirtual()) {
1800 // layout.
1807 // We know that the base is not a primary base in the layout class if
1835 OffsetInLayoutClass + Layout.getBaseClassOffset(BaseDecl);
1880 /// dumpLayout - Dump the vtable layout.
2364 // layout of the defining class, and the method definition will subtract
2377 // Vtordisps are emitted into the class layout if a class has
2399 /// Context - The ASTContext which we will use for layout information.
2634 // Respective record layout is:
2699 const ASTRecordLayout &Layout = Context.getASTRecordLayout(PrevRD);
2715 ThisOffset += Layout.getBaseClassOffset(CurRD);
2796 // When foo() is called, an object with a layout of class C has a vftable
2797 // referencing B::f() that assumes a B layout, so the "this" adjustments are
2800 // actual location of a vbase in the layout class and the location assumed by
2926 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
2940 Base.getBaseOffset() + Layout.getBaseClassOffset(NextBase);
2942 } else if (const CXXRecordDecl *PrimaryBase = Layout.getPrimaryBase()) {
2943 assert(!Layout.isPrimaryBaseVirtual() &&
3276 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
3279 if (ForVBTables ? Layout.hasOwnVBPtr() : Layout.hasOwnVFPtr())
3314 Base == (ForVBTables ? Layout.getBaseSharingVBPtr()
3315 : Layout.getPrimaryBase()))
3323 P->NonVirtualOffset += Layout.getBaseClassOffset(Base);
3328 P->FullOffsetInMDC += Layout.getVBaseClassOffset(VB);
3415 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
3421 : Offset + Layout.getBaseClassOffset(Base);
3461 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
3469 : Offset + Layout.getBaseClassOffset(Base);
3688 const ASTRecordLayout &Layout = Context.getASTRecordLayout(RD);
3689 if (const CXXRecordDecl *VBPtrBase = Layout.getBaseSharingVBPtr()) {
3691 // virtual bases come first so that the layout is the same.