// If non-zero indicates that some thread is trying to allocate ids without being able to update // the method->id mapping (due to not being able to allocate or something). In this case decode // and encode need to do a linear scan of the lists. The ScopedEnableSuspendAllJniIdQueries struct // will deal with fixing everything up.
size_t deferred_allocation_refcount_ GUARDED_BY(Locks::jni_id_lock_) = 0; // min jmethodID that might not have it's method->id mapping filled in.
uintptr_t deferred_allocation_method_id_start_ GUARDED_BY(Locks::jni_id_lock_) = 0u; // min jfieldID that might not have it's field->id mapping filled in.
uintptr_t deferred_allocation_field_id_start_ GUARDED_BY(Locks::jni_id_lock_) = 0u;
GcRoot<mirror::Object> pointer_marker_;
friendclass ScopedEnableSuspendAllJniIdQueries; // For GetPointerMarker friendclass mirror::ClassExt;
};
// A scope that will enable using the Encode/Decode JNI id functions with all threads suspended. // This is required since normally we need to be able to allocate to encode new ids. This should // only be used when absolutely required, for example to invoke user-callbacks during heap walking // or similar. class EXPORT ScopedEnableSuspendAllJniIdQueries { public:
ScopedEnableSuspendAllJniIdQueries() REQUIRES_SHARED(Locks::mutator_lock_);
~ScopedEnableSuspendAllJniIdQueries() REQUIRES_SHARED(Locks::mutator_lock_);
private:
JniIdManager* manager_;
};
} // namespace jni
} // namespace art
#endif// ART_RUNTIME_JNI_JNI_ID_MANAGER_H_
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 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.