Home | History | Annotate | Download | only in AST

Lines Matching defs:Method

64     /// Method - The method decl of the overrider.
65 const CXXMethodDecl *Method;
74 OverriderInfo() : Method(nullptr), VirtualBase(nullptr),
137 /// getOverrider - Get the final overrider for the given method declaration in
194 const UniqueVirtualMethod &Method = I->second.front();
196 const CXXRecordDecl *OverriderRD = Method.Method->getParent();
198 std::make_pair(OverriderRD, Method.Subobject))
202 Method.Subobject)];
205 assert(!Overrider.Method && "Overrider should not exist yet!");
208 Overrider.Method = Method.Method;
209 Overrider.VirtualBase = Method.InVirtualSubobject;
420 Overrider.Method->printQualifiedName(Out);
424 if (!Overrider.Method->isPure())
425 Offset = ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD);
829 /// MethodInfo - Contains information about a method in a vtable.
832 /// BaseOffset - The base offset of this method.
836 /// method.
839 /// VTableIndex - The index in the vtable that this method has.
878 method.
1084 /// Visit all the methods overridden by the given method recursively,
1085 /// in a depth-first pre-order. The Visitor's visitor method returns a bool
1087 /// method (i.e. returning false stops the iteration).
1091 assert(MD->isVirtual() && "Method is not virtual!");
1107 // Don't recurse on this method if we've already collected it.
1113 /// ComputeAllOverriddenMethods - Given a method decl, will return a set of all
1123 // Now go through the method info map and see if any of the methods need
1136 // Get the final overrider for this method.
1166 /// Clear the method info map.
1274 if (Overrider.Method->isPure())
1280 BaseSubobject OverriderBaseSubobject(Overrider.Method->getParent(),
1347 /// OverridesIndirectMethodInBase will return true if given C::f as the method
1431 /// FindNearestOverriddenMethod - Given a method, returns the overridden method
1432 /// from the nearest base. Returns null if no method was found.
1448 // We found our overridden method.
1522 // Check if this virtual member function overrides a method in a primary
1529 // Replace the method info of the overridden method with our own
1530 // method.
1532 "Did not find the overridden method!");
1539 "Should not have method info for this method yet!");
1544 // If the overridden method exists in a virtual base class or a direct
1555 Overrider.Method->getParent() == MostDerivedClass) {
1561 ComputeReturnAdjustmentBaseOffset(Context, Overrider.Method, MD);
1566 AddThunk(Overrider.Method,
1602 // Insert the method info for this method.
1607 "Should not have method info for this method yet!");
1611 const CXXMethodDecl *OverriderMD = Overrider.Method;
1630 AddMethod(Overrider.Method, ReturnAdjustment);
2125 // We store the method names in a map to get a stable order.
2147 assert(LHS.Method == nullptr && RHS.Method == nullptr);
2389 // 3. Virtual method definitions expect their 'this' parameter to point to the
2390 // first vfptr whose table provides a compatible overridden method. In many
2392 // the method instead of passing through a thunk.
2394 // A compatible overridden method is one which does not have a non-trivial
2398 // layout of the defining class, and the method definition will subtract
2414 // b) a method overriding a method in a virtual base.
2452 /// MethodInfo - Contains information about a method in a vtable.
2456 /// this method's base has, or zero.
2459 /// VFTableIndex - The index in the vftable that this method has.
2493 /// AddThunk - Add a thunk for the given method.
2506 /// method, relative to the beginning of the MostDerivedClass.
2628 /// that define the given method.
2636 // Don't recurse on this method if we've already collected it.
2650 visitAllOverriddenMethods(Overrider.Method, Collector);
2653 // in the base that defines the method.
2658 Overrider.Method->getParent()->lookupInBases(BaseInSet, &Collector.Bases,
2664 // in the derived classes that inherit this method.
2669 Context.getASTRecordLayout(Overrider.Method->getParent());
2690 // derived class and it overrides a method of the B's own vbase A,
2703 if (isa<CXXDestructorDecl>(Overrider.Method)) {
2722 assert(!First && "Method not found in the given subobject?");
2749 if (Overrider.Method->getParent() == MostDerivedClass ||
2792 /// We need a return adjusting thunk for this method if its return type is
2871 const CXXMethodDecl *OverriderMD = Overrider.Method;
2889 // If the overridden method went to a different vftable, skip it.
2896 // No return adjustment needed - just replace the overridden method info
2903 "Should not have method info for this method yet!");
2909 // the overrider. Mark the overriden method as shadowed by the new slot.
2913 // unless the method is the final overrider without this adjustment.
2919 // e.g. each method that wasn't seen in any of the visited sub-bases
2924 // If we got here, MD is a method not seen in any of the sub-bases or
2925 // it requires return adjustment. Insert the method info for this method.
2932 "Should not have method info for this method yet!");
2977 if (!R.isEmpty() || TI.Method) {
2981 << TI.Method->getReturnType().getCanonicalType().getAsString()
3088 // We store the method names in a map to get a stable order.
3472 "Only use this method for virtual methods or dtors");