Lines Matching defs:iftable

98 #include "mirror/iftable-inl.h"
526 // Fill in the empty iftable. Needs to be done after the kObjectArrayClass root is set.
660 // Setup the single, global copy of "iftable".
1476 mirror::IfTable* iftable = klass->GetIfTable();
1478 if (iftable->GetMethodArrayCount(i) > 0) {
1479 isc.SanityCheckArtMethodPointerArray(iftable->GetMethodArray(i), nullptr);
2742 // Make sure we have a valid empty iftable even if there are errors.
3765 // Use the single, global copies of "interfaces" and "iftable"
4372 // Object has an empty iftable, copy it for that reason.
5978 // - iftable: The iftable we are searching for an overriding method on.
5991 Handle<mirror::IfTable> iftable,
5998 DCHECK(iftable != nullptr);
6000 DCHECK_LT(ifstart, iftable->Count());
6001 DCHECK_EQ(iface.Get(), iftable->GetInterface(ifstart));
6004 size_t iftable_count = iftable->Count();
6009 current_iface.Assign(iftable->GetInterface(k));
6055 MutableHandle<mirror::IfTable> iftable(hs.NewHandle(klass->GetIfTable()));
6059 // Iterates over the klass's iftable in reverse
6063 DCHECK_LT(k, iftable->Count());
6065 iface.Assign(iftable->GetInterface(k));
6091 iftable,
6108 iftable,
6182 Handle<mirror::IfTable> iftable) {
6189 size_t num_methods = iftable->GetInterface(i)->NumDeclaredVirtualMethods();
6209 iftable->SetMethodArray(i, method_array);
6447 // the iftable and every interface precedes all of its sub-interfaces in this list.
6453 // This returns the total number of items in the iftable. The iftable might be resized down after
6459 // Upon entry into this function iftable is a copy of the superclass's iftable with the first
6462 // iftable must be large enough to hold all interfaces without changing its size.
6463 static size_t FillIfTable(ObjPtr<mirror::IfTable> iftable,
6468 // This is the set of all class's already in the iftable. Used to make checking if a class has
6473 ObjPtr<mirror::Class> iface = iftable->GetInterface(i);
6479 // Let us call the first filled_ifcount elements of iftable the current-iface-list.
6495 iftable->SetInterface(filled_ifcount, super_interface);
6502 iftable->SetInterface(filled_ifcount, interface);
6516 // Check that the iftable is ordered correctly.
6518 ObjPtr<mirror::Class> if_a = iftable->GetInterface(i);
6520 ObjPtr<mirror::Class> if_b = iftable->GetInterface(j);
6559 // Class just inherits marker interfaces from parent so recycle parent's iftable.
6583 MutableHandle<mirror::IfTable> iftable(hs.NewHandle(AllocIfTable(self, ifcount)));
6584 if (UNLIKELY(iftable == nullptr)) {
6588 // Fill in table with superclass's iftable.
6593 iftable->SetInterface(i, super_interface);
6612 new_ifcount = FillIfTable(iftable.Get(), super_ifcount, std::move(to_add));
6617 // Shrink iftable in case duplicates were found
6620 iftable.Assign(down_cast<mirror::IfTable*>(
6621 iftable->CopyOf(self, new_ifcount * mirror::IfTable::kMax)));
6622 if (UNLIKELY(iftable == nullptr)) {
6630 klass->SetIfTable(iftable.Get());
6741 // No imt in the super class, need to reconstruct from the iftable.
6801 void UpdateIfTable(Handle<mirror::IfTable> iftable) REQUIRES_SHARED(Locks::mutator_lock_);
6951 // the iftable to find if there is a NSME or AME.)
7215 void ClassLinker::LinkInterfaceMethodsHelper::UpdateIfTable(Handle<mirror::IfTable> iftable) {
7218 // Go fix up all the stale iftable pointers.
7220 for (size_t j = 0, count = iftable->GetMethodArrayCount(i); j < count; ++j) {
7221 auto* method_array = iftable->GetMethodArray(i);
7260 Handle<mirror::IfTable> iftable(hs.NewHandle(klass->GetIfTable()));
7277 if (!AllocateIfTableMethodArrays(self, klass, iftable)) {
7294 size_t num_methods = iftable->GetInterface(i)->NumDeclaredVirtualMethods();
7302 ? hs2.NewHandle(iftable->GetMethodArray(i))
7313 // at the super-classes iftable methods (copied into method_array previously) when we are
7333 auto* interface_method = iftable->GetInterface(i)->GetVirtualMethod(j, image_pointer_size_);
7421 // illegal states, incorrect vtable size, and incorrect or inconsistent iftable entries)
7445 // We found a default method implementation. Record it in the iftable and IMT.
7473 helper.UpdateIfTable(iftable);