template<VerifyObjectFlags kVerifyFlags, ReadBarrierOption kReadBarrierOption> void ClassExt::VisitDexCaches(DexCacheVisitor& visitor) {
ObjPtr<ObjectArray<DexCache>> arr(GetObsoleteDexCaches<kVerifyFlags, kReadBarrierOption>()); if (!arr.IsNull()) {
int32_t len = arr->GetLength(); for (int32_t i = 0; i < len; i++) {
ObjPtr<mirror::DexCache> dex_cache = arr->Get<kVerifyFlags, kReadBarrierOption>(i);
visitor.Visit(dex_cache);
}
}
}
template<ReadBarrierOption kReadBarrierOption, class Visitor> void ClassExt::VisitMethods(Visitor visitor, PointerSize pointer_size) {
ObjPtr<PointerArray> arr(GetObsoleteMethods<kDefaultVerifyFlags, kReadBarrierOption>()); if (!arr.IsNull()) {
int32_t len = arr->GetLength(); for (int32_t i = 0; i < len; i++) {
ArtMethod* method = arr->GetElementPtrSize<ArtMethod*>(i, pointer_size); if (method != nullptr) {
visitor(method);
}
}
}
}
template<ReadBarrierOption kReadBarrierOption, class Visitor> void ClassExt::VisitJMethodIDs(Visitor v) {
ObjPtr<Object> arr(GetJMethodIDs<kDefaultVerifyFlags, kReadBarrierOption>()); if (!arr.IsNull() && arr->IsArrayInstance()) {
ObjPtr<PointerArray> marr(down_cast<PointerArray*>(arr.Ptr()));
int32_t len = marr->GetLength(); for (int32_t i = 0; i < len; i++) {
jmethodID id = marr->GetElementPtrSize<jmethodID>(i, kRuntimePointerSize); if (id != nullptr) {
v(id, i);
}
}
}
} template<ReadBarrierOption kReadBarrierOption, class Visitor> void ClassExt::VisitJFieldIDs(Visitor v) {
ObjPtr<Object> sarr_obj(GetStaticJFieldIDs<kDefaultVerifyFlags, kReadBarrierOption>()); if (!sarr_obj.IsNull() && sarr_obj->IsArrayInstance()) {
ObjPtr<PointerArray> sarr(down_cast<PointerArray*>(sarr_obj->AsArray().Ptr()));
int32_t len = sarr->GetLength(); for (int32_t i = 0; i < len; i++) {
jfieldID id = sarr->GetElementPtrSize<jfieldID>(i, kRuntimePointerSize); if (id != nullptr) {
v(id, i, true);
}
}
}
ObjPtr<PointerArray> iarr_obj(GetInstanceJFieldIDs<kDefaultVerifyFlags, kReadBarrierOption>()); if (!iarr_obj.IsNull() && iarr_obj->IsArrayInstance()) {
ObjPtr<PointerArray> iarr(down_cast<PointerArray*>(iarr_obj->AsArray().Ptr()));
int32_t len = iarr->GetLength(); for (int32_t i = 0; i < len; i++) {
jfieldID id = iarr->GetElementPtrSize<jfieldID>(i, kRuntimePointerSize); if (id != nullptr) {
v(id, i, false);
}
}
}
}
} // namespace mirror
} // namespace art
#endif// ART_RUNTIME_MIRROR_CLASS_EXT_INL_H_
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-06-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.