Lines Matching refs:art

84   if (art::kIsDebugBuild) {  in CopyExtensionsFrom()
134 EventMask& EventMasks::GetEventMask(art::Thread* thread) { in GetEventMask()
153 EventMask* EventMasks::GetEventMaskOrNull(art::Thread* thread) { in GetEventMaskOrNull()
170 void EventMasks::EnableEvent(ArtJvmTiEnv* env, art::Thread* thread, ArtJvmtiEvent event) { in EnableEvent()
172 env->event_info_mutex_.AssertExclusiveHeld(art::Thread::Current()); in EnableEvent()
180 void EventMasks::DisableEvent(ArtJvmTiEnv* env, art::Thread* thread, ArtJvmtiEvent event) { in DisableEvent()
182 env->event_info_mutex_.AssertExclusiveHeld(art::Thread::Current()); in DisableEvent()
228 art::WriterMutexLock mu(art::Thread::Current(), envs_lock_); in RegisterArtJvmTiEnv()
233 art::WriterMutexLock mu(art::Thread::Current(), envs_lock_); in RemoveArtJvmTiEnv()
266 static Type AddLocalRef(art::JNIEnvExt* e, art::ObjPtr<art::mirror::Object> obj) in AddLocalRef()
267 REQUIRES_SHARED(art::Locks::mutator_lock_) { in AddLocalRef()
273 art::Thread* self, in RunEventCallback()
274 art::JNIEnvExt* jnienv, in RunEventCallback()
276 REQUIRES_SHARED(art::Locks::mutator_lock_) { in RunEventCallback()
284 static void SetupDdmTracking(art::DdmCallback* listener, bool enable) { in SetupDdmTracking()
285 art::ScopedObjectAccess soa(art::Thread::Current()); in SetupDdmTracking()
287 art::Runtime::Current()->GetRuntimeCallbacks()->AddDdmCallback(listener); in SetupDdmTracking()
289 art::Runtime::Current()->GetRuntimeCallbacks()->RemoveDdmCallback(listener); in SetupDdmTracking()
293 class JvmtiDdmChunkListener : public art::DdmCallback {
297 void DdmPublishChunk(uint32_t type, const art::ArrayRef<const uint8_t>& data) in DdmPublishChunk()
298 override REQUIRES_SHARED(art::Locks::mutator_lock_) { in DdmPublishChunk()
300 art::Thread* self = art::Thread::Current(); in DdmPublishChunk()
319 void ObjectAllocated(art::Thread* self, art::ObjPtr<art::mirror::Object>* obj, size_t byte_count) in ObjectAllocated()
320 override REQUIRES_SHARED(art::Locks::mutator_lock_) { in ObjectAllocated()
321 DCHECK_EQ(self, art::Thread::Current()); in ObjectAllocated()
324 art::StackHandleScope<1> hs(self); in ObjectAllocated()
333 art::JNIEnvExt* jni_env = self->GetJniEnv(); in ObjectAllocated()
355 art::ScopedObjectAccess soa(art::Thread::Current()); in SetupObjectAllocationTracking()
363 class JvmtiMonitorListener : public art::MonitorCallback {
367 void MonitorContendedLocking(art::Monitor* m) in MonitorContendedLocking()
368 override REQUIRES_SHARED(art::Locks::mutator_lock_) { in MonitorContendedLocking()
370 art::Thread* self = art::Thread::Current(); in MonitorContendedLocking()
371 art::JNIEnvExt* jnienv = self->GetJniEnv(); in MonitorContendedLocking()
381 void MonitorContendedLocked(art::Monitor* m) in MonitorContendedLocked()
382 override REQUIRES_SHARED(art::Locks::mutator_lock_) { in MonitorContendedLocked()
384 art::Thread* self = art::Thread::Current(); in MonitorContendedLocked()
385 art::JNIEnvExt* jnienv = self->GetJniEnv(); in MonitorContendedLocked()
395 void ObjectWaitStart(art::Handle<art::mirror::Object> obj, int64_t timeout) in ObjectWaitStart()
396 override REQUIRES_SHARED(art::Locks::mutator_lock_) { in ObjectWaitStart()
398 art::Thread* self = art::Thread::Current(); in ObjectWaitStart()
399 art::JNIEnvExt* jnienv = self->GetJniEnv(); in ObjectWaitStart()
422 void MonitorWaitFinished(art::Monitor* m, bool timeout) in MonitorWaitFinished()
423 override REQUIRES_SHARED(art::Locks::mutator_lock_) { in MonitorWaitFinished()
425 art::Thread* self = art::Thread::Current(); in MonitorWaitFinished()
426 art::JNIEnvExt* jnienv = self->GetJniEnv(); in MonitorWaitFinished()
441 class JvmtiParkListener : public art::ParkCallback {
446 override REQUIRES_SHARED(art::Locks::mutator_lock_) { in ThreadParkStart()
448 art::Thread* self = art::Thread::Current(); in ThreadParkStart()
449 art::JNIEnvExt* jnienv = self->GetJniEnv(); in ThreadParkStart()
450 art::ArtField* parkBlockerField = art::jni::DecodeArtField( in ThreadParkStart()
451 art::WellKnownClasses::java_lang_Thread_parkBlocker); in ThreadParkStart()
452 art::ObjPtr<art::mirror::Object> blocker_obj = parkBlockerField->GetObj(self->GetPeer()); in ThreadParkStart()
504 void ThreadParkFinished(bool timeout) override REQUIRES_SHARED(art::Locks::mutator_lock_) { in ThreadParkFinished()
506 art::Thread* self = art::Thread::Current(); in ThreadParkFinished()
507 art::JNIEnvExt* jnienv = self->GetJniEnv(); in ThreadParkFinished()
508 art::ArtField* parkBlockerField = art::jni::DecodeArtField( in ThreadParkFinished()
509 art::WellKnownClasses::java_lang_Thread_parkBlocker); in ThreadParkFinished()
510 art::ObjPtr<art::mirror::Object> blocker_obj = parkBlockerField->GetObj(self->GetPeer()); in ThreadParkFinished()
528 static void SetupMonitorListener(art::MonitorCallback* monitor_listener, art::ParkCallback* park_li… in SetupMonitorListener()
531 art::ScopedObjectAccess soa(art::Thread::Current()); in SetupMonitorListener()
533 art::Runtime::Current()->GetRuntimeCallbacks()->AddMonitorCallback(monitor_listener); in SetupMonitorListener()
534 art::Runtime::Current()->GetRuntimeCallbacks()->AddParkCallback(park_listener); in SetupMonitorListener()
536 art::Runtime::Current()->GetRuntimeCallbacks()->RemoveMonitorCallback(monitor_listener); in SetupMonitorListener()
537 art::Runtime::Current()->GetRuntimeCallbacks()->RemoveParkCallback(park_listener); in SetupMonitorListener()
542 class JvmtiGcPauseListener : public art::gc::GcPauseListener {
550 handler_->DispatchEvent<ArtJvmtiEvent::kGarbageCollectionStart>(art::Thread::Current()); in StartPause()
554 handler_->DispatchEvent<ArtJvmtiEvent::kGarbageCollectionFinish>(art::Thread::Current()); in EndPause()
588 art::Runtime::Current()->GetHeap()->SetGcPauseListener(listener); in SetupGcPauseTracking()
590 art::Runtime::Current()->GetHeap()->RemoveGcPauseListener(); in SetupGcPauseTracking()
595 class JvmtiMethodTraceListener final : public art::instrumentation::InstrumentationListener {
600 art::LockLevel::kGenericBottomLock) {} in JvmtiMethodTraceListener()
602 void AddDelayedNonStandardExitEvent(const art::ShadowFrame* frame, bool is_object, jvalue val) in AddDelayedNonStandardExitEvent()
603 REQUIRES_SHARED(art::Locks::mutator_lock_) in AddDelayedNonStandardExitEvent()
604 REQUIRES(art::Locks::user_code_suspension_lock_, art::Locks::thread_list_lock_) { in AddDelayedNonStandardExitEvent()
605 art::Thread* self = art::Thread::Current(); in AddDelayedNonStandardExitEvent()
609 art::MutexLock mu(self, non_standard_exits_lock_); in AddDelayedNonStandardExitEvent()
627 void MethodEntered(art::Thread* self, in MethodEntered()
628 art::Handle<art::mirror::Object> this_object ATTRIBUTE_UNUSED, in MethodEntered()
629 art::ArtMethod* method, in MethodEntered()
631 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in MethodEntered()
634 art::JNIEnvExt* jnienv = self->GetJniEnv(); in MethodEntered()
638 art::jni::EncodeArtMethod(method)); in MethodEntered()
644 void MethodExited(art::Thread* self, in MethodExited()
645 art::Handle<art::mirror::Object> this_object ATTRIBUTE_UNUSED, in MethodExited()
646 art::ArtMethod* method, in MethodExited()
648 art::instrumentation::OptionalFrame frame, in MethodExited()
649 art::MutableHandle<art::mirror::Object>& return_value) in MethodExited()
650 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in MethodExited()
660 art::MutexLock mu(self, non_standard_exits_lock_); in MethodExited()
661 const art::ShadowFrame* sframe = &frame.value().get(); in MethodExited()
673 art::ScopedThreadSuspension sts(self, art::ThreadState::kNative); in MethodExited()
681 method->GetInterfaceMethodIfProxy(art::kRuntimePointerSize)->GetReturnTypePrimitive(), in MethodExited()
682 art::Primitive::kPrimNot) << method->PrettyMethod(); in MethodExited()
685 art::JNIEnvExt* jnienv = self->GetJniEnv(); in MethodExited()
692 art::jni::EncodeArtMethod(method), in MethodExited()
699 void MethodExited(art::Thread* self, in MethodExited()
700 art::Handle<art::mirror::Object> this_object ATTRIBUTE_UNUSED, in MethodExited()
701 art::ArtMethod* method, in MethodExited()
703 art::instrumentation::OptionalFrame frame, in MethodExited()
704 art::JValue& return_value) REQUIRES_SHARED(art::Locks::mutator_lock_) override { in MethodExited()
711 art::MutexLock mu(self, non_standard_exits_lock_); in MethodExited()
712 const art::ShadowFrame* sframe = &frame.value().get(); in MethodExited()
723 art::ScopedThreadSuspension sts(self, art::ThreadState::kNative); in MethodExited()
730 method->GetInterfaceMethodIfProxy(art::kRuntimePointerSize)->GetReturnTypePrimitive(), in MethodExited()
731 art::Primitive::kPrimNot) << method->PrettyMethod(); in MethodExited()
734 art::JNIEnvExt* jnienv = self->GetJniEnv(); in MethodExited()
742 art::jni::EncodeArtMethod(method), in MethodExited()
750 void MethodUnwind(art::Thread* self, in MethodUnwind()
751 art::Handle<art::mirror::Object> this_object ATTRIBUTE_UNUSED, in MethodUnwind()
752 art::ArtMethod* method, in MethodUnwind()
754 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in MethodUnwind()
760 art::JNIEnvExt* jnienv = self->GetJniEnv(); in MethodUnwind()
761 art::StackHandleScope<1> hs(self); in MethodUnwind()
762 art::Handle<art::mirror::Throwable> old_exception(hs.NewHandle(self->GetException())); in MethodUnwind()
769 art::jni::EncodeArtMethod(method), in MethodUnwind()
780 void DexPcMoved(art::Thread* self, in DexPcMoved()
781 art::Handle<art::mirror::Object> this_object ATTRIBUTE_UNUSED, in DexPcMoved()
782 art::ArtMethod* method, in DexPcMoved()
784 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in DexPcMoved()
792 art::JNIEnvExt* jnienv = self->GetJniEnv(); in DexPcMoved()
793 jmethodID jmethod = art::jni::EncodeArtMethod(method); in DexPcMoved()
806 void FieldRead(art::Thread* self, in FieldRead()
807 art::Handle<art::mirror::Object> this_object, in FieldRead()
808 art::ArtMethod* method_p, in FieldRead()
810 art::ArtField* field_p) in FieldRead()
811 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in FieldRead()
813 art::StackReflectiveHandleScope<1, 1> rhs(self); in FieldRead()
814 art::ReflectiveHandle<art::ArtField> field(rhs.NewHandle(field_p)); in FieldRead()
815 art::ReflectiveHandle<art::ArtMethod> method(rhs.NewHandle(method_p)); in FieldRead()
816 art::JNIEnvExt* jnienv = self->GetJniEnv(); in FieldRead()
825 art::jni::EncodeArtMethod(method), in FieldRead()
829 art::jni::EncodeArtField(field)); in FieldRead()
833 void FieldWritten(art::Thread* self, in FieldWritten()
834 art::Handle<art::mirror::Object> this_object, in FieldWritten()
835 art::ArtMethod* method_p, in FieldWritten()
837 art::ArtField* field_p, in FieldWritten()
838 art::Handle<art::mirror::Object> new_val) in FieldWritten()
839 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in FieldWritten()
841 art::JNIEnvExt* jnienv = self->GetJniEnv(); in FieldWritten()
842 art::StackReflectiveHandleScope<1, 1> rhs(self); in FieldWritten()
843 art::ReflectiveHandle<art::ArtField> field(rhs.NewHandle(field_p)); in FieldWritten()
844 art::ReflectiveHandle<art::ArtMethod> method(rhs.NewHandle(method_p)); in FieldWritten()
857 art::jni::EncodeArtMethod(method), in FieldWritten()
861 art::jni::EncodeArtField(field), in FieldWritten()
868 void FieldWritten(art::Thread* self, in FieldWritten()
869 art::Handle<art::mirror::Object> this_object, in FieldWritten()
870 art::ArtMethod* method_p, in FieldWritten()
872 art::ArtField* field_p, in FieldWritten()
873 const art::JValue& field_value) in FieldWritten()
874 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in FieldWritten()
876 art::JNIEnvExt* jnienv = self->GetJniEnv(); in FieldWritten()
877 art::StackReflectiveHandleScope<1, 1> rhs(self); in FieldWritten()
878 art::ReflectiveHandle<art::ArtField> field(rhs.NewHandle(field_p)); in FieldWritten()
879 art::ReflectiveHandle<art::ArtMethod> method(rhs.NewHandle(method_p)); in FieldWritten()
885 char type_char = art::Primitive::Descriptor(field->GetTypeAsPrimitiveType())[0]; in FieldWritten()
894 art::jni::EncodeArtMethod(method), in FieldWritten()
900 art::jni::EncodeArtField(field), in FieldWritten()
906 void WatchedFramePop(art::Thread* self, const art::ShadowFrame& frame) in WatchedFramePop()
907 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in WatchedFramePop()
908 art::JNIEnvExt* jnienv = self->GetJniEnv(); in WatchedFramePop()
911 art::MutexLock mu(self, *art::Locks::thread_list_lock_); in WatchedFramePop()
920 art::jni::EncodeArtMethod(frame.GetMethod()), in WatchedFramePop()
925 static void FindCatchMethodsFromThrow(art::Thread* self, in FindCatchMethodsFromThrow()
926 art::Handle<art::mirror::Throwable> exception, in FindCatchMethodsFromThrow()
927 /*out*/ art::ArtMethod** out_method, in FindCatchMethodsFromThrow()
929 REQUIRES_SHARED(art::Locks::mutator_lock_) { in FindCatchMethodsFromThrow()
933 class CatchLocationFinder final : public art::StackVisitor { in FindCatchMethodsFromThrow()
935 CatchLocationFinder(art::Thread* target, in FindCatchMethodsFromThrow()
936 art::Handle<art::mirror::Class> exception_class, in FindCatchMethodsFromThrow()
937 art::Context* context, in FindCatchMethodsFromThrow()
938 /*out*/ art::ArtMethod** out_catch_method, in FindCatchMethodsFromThrow()
940 REQUIRES_SHARED(art::Locks::mutator_lock_) in FindCatchMethodsFromThrow()
941 : StackVisitor(target, context, art::StackVisitor::StackWalkKind::kIncludeInlinedFrames), in FindCatchMethodsFromThrow()
946 bool VisitFrame() override REQUIRES_SHARED(art::Locks::mutator_lock_) { in FindCatchMethodsFromThrow()
947 art::ArtMethod* method = GetMethod(); in FindCatchMethodsFromThrow()
955 if (cur_dex_pc == art::dex::kDexNoIndex) { in FindCatchMethodsFromThrow()
962 if (found_dex_pc != art::dex::kDexNoIndex) { in FindCatchMethodsFromThrow()
973 art::Handle<art::mirror::Class> exception_class_; in FindCatchMethodsFromThrow()
974 art::ArtMethod** catch_method_ptr_; in FindCatchMethodsFromThrow()
980 art::StackHandleScope<1> hs(self); in FindCatchMethodsFromThrow()
983 std::unique_ptr<art::Context> context(art::Context::Create()); in FindCatchMethodsFromThrow()
994 void ExceptionThrown(art::Thread* self, art::Handle<art::mirror::Throwable> exception_object) in ExceptionThrown()
995 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in ExceptionThrown()
1000 art::JNIEnvExt* jnienv = self->GetJniEnv(); in ExceptionThrown()
1001 art::ArtMethod* catch_method; in ExceptionThrown()
1005 art::ArtMethod* method = self->GetCurrentMethod(&dex_pc, in ExceptionThrown()
1007 /* abort_on_error= */ art::kIsDebugBuild); in ExceptionThrown()
1014 art::jni::EncodeArtMethod(method), in ExceptionThrown()
1017 art::jni::EncodeArtMethod(catch_method), in ExceptionThrown()
1024 void ExceptionHandled(art::Thread* self, art::Handle<art::mirror::Throwable> exception_object) in ExceptionHandled()
1025 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in ExceptionHandled()
1029 art::JNIEnvExt* jnienv = self->GetJniEnv(); in ExceptionHandled()
1031 art::ArtMethod* method = self->GetCurrentMethod(&dex_pc, in ExceptionHandled()
1033 /* abort_on_error= */ art::kIsDebugBuild); in ExceptionHandled()
1040 art::jni::EncodeArtMethod(method), in ExceptionHandled()
1048 void Branch(art::Thread* self ATTRIBUTE_UNUSED, in Branch()
1049 art::ArtMethod* method ATTRIBUTE_UNUSED, in Branch()
1052 REQUIRES_SHARED(art::Locks::mutator_lock_) override { in Branch()
1066 mutable art::Mutex non_standard_exits_lock_
1067 ACQUIRED_BEFORE(art::Locks::instrument_entrypoints_lock_);
1069 std::unordered_map<const art::ShadowFrame*, NonStandardExitEventInfo> non_standard_exits_
1076 return art::instrumentation::Instrumentation::kMethodEntered; in GetInstrumentationEventsFor()
1088 return art::instrumentation::Instrumentation::kMethodExited | in GetInstrumentationEventsFor()
1089 art::instrumentation::Instrumentation::kMethodUnwind; in GetInstrumentationEventsFor()
1097 return art::instrumentation::Instrumentation::kFieldWritten; in GetInstrumentationEventsFor()
1099 return art::instrumentation::Instrumentation::kFieldRead; in GetInstrumentationEventsFor()
1109 return art::instrumentation::Instrumentation::kDexPcMoved; in GetInstrumentationEventsFor()
1117 return art::instrumentation::Instrumentation::kWatchedFramePop; in GetInstrumentationEventsFor()
1119 return art::instrumentation::Instrumentation::kExceptionThrown; in GetInstrumentationEventsFor()
1121 return art::instrumentation::Instrumentation::kExceptionHandled; in GetInstrumentationEventsFor()
1190 art::ScopedObjectAccess soa(art::Thread::Current()); in HandleEventDeopt()
1237 art::ScopedThreadStateChange stsc(art::Thread::Current(), art::ThreadState::kNative); in SetupTraceListener()
1238 art::instrumentation::Instrumentation* instr = art::Runtime::Current()->GetInstrumentation(); in SetupTraceListener()
1239 art::ScopedSuspendAll ssa("jvmti method tracing installation"); in SetupTraceListener()
1251 class UpdateEntryPointsClassVisitor : public art::ClassVisitor { in HandleLocalAccessCapabilityAdded()
1253 explicit UpdateEntryPointsClassVisitor(art::Runtime* runtime) in HandleLocalAccessCapabilityAdded()
1256 bool operator()(art::ObjPtr<art::mirror::Class> klass) in HandleLocalAccessCapabilityAdded()
1257 override REQUIRES(art::Locks::mutator_lock_) { in HandleLocalAccessCapabilityAdded()
1264 for (auto& m : klass->GetMethods(art::kRuntimePointerSize)) { in HandleLocalAccessCapabilityAdded()
1277 art::Runtime* runtime_; in HandleLocalAccessCapabilityAdded()
1279 art::ScopedObjectAccess soa(art::Thread::Current()); in HandleLocalAccessCapabilityAdded()
1280 UpdateEntryPointsClassVisitor visitor(art::Runtime::Current()); in HandleLocalAccessCapabilityAdded()
1281 art::Runtime::Current()->GetClassLinker()->VisitClasses(&visitor); in HandleLocalAccessCapabilityAdded()
1308 art::ReaderMutexLock mu(art::Thread::Current(), envs_lock_); in SetupFramePopTraceListener()
1310 art::ReaderMutexLock event_mu(art::Thread::Current(), env->event_info_mutex_); in SetupFramePopTraceListener()
1437 art::Thread* self = art::Thread::Current(); in SetInternalEvent()
1438 art::Thread* target = nullptr; in SetInternalEvent()
1453 art::ScopedObjectAccess soa(self); in SetInternalEvent()
1454 art::WriterMutexLock el_mu(self, envs_lock_); in SetInternalEvent()
1455 art::MutexLock tll_mu(self, *art::Locks::thread_list_lock_); in SetInternalEvent()
1459 } else if (target->IsStillStarting() || target->GetState() == art::ThreadState::kStarting) { in SetInternalEvent()
1531 art::Thread* self = art::Thread::Current(); in SetEvent()
1532 art::Thread* target = nullptr; in SetEvent()
1547 art::ScopedObjectAccess soa(self); in SetEvent()
1548 art::WriterMutexLock el_mu(self, envs_lock_); in SetEvent()
1549 art::MutexLock tll_mu(self, *art::Locks::thread_list_lock_); in SetEvent()
1555 target->GetState() == art::ThreadState::kStarting) { in SetEvent()
1562 art::WriterMutexLock ei_mu(self, env->event_info_mutex_); in SetEvent()
1592 bool EventHandler::GetThreadEventState(ArtJvmtiEvent event, art::Thread* thread) { in GetThreadEventState()
1618 void EventHandler::AddDelayedNonStandardExitEvent(const art::ShadowFrame *frame, in AddDelayedNonStandardExitEvent()
1629 int32_t EventHandler::DecrInternalEventThreadRefcount(ArtJvmtiEvent event, art::Thread* target) { in DecrInternalEventThreadRefcount()
1633 int32_t EventHandler::IncrInternalEventThreadRefcount(ArtJvmtiEvent event, art::Thread* target) { in IncrInternalEventThreadRefcount()
1637 int32_t& EventHandler::GetInternalEventThreadRefcount(ArtJvmtiEvent event, art::Thread* target) { in GetInternalEventThreadRefcount()
1660 art::Thread* self = art::Thread::Current(); in Shutdown()
1661 art::gc::ScopedGCCriticalSection gcs(self, in Shutdown()
1662 art::gc::kGcCauseInstrumentation, in Shutdown()
1663 art::gc::kCollectorTypeInstrumentation); in Shutdown()
1664 art::ScopedSuspendAll ssa("jvmti method tracing uninstallation"); in Shutdown()
1666 art::Runtime::Current()->GetInstrumentation()->RemoveListener(method_trace_listener_.get(), ~0); in Shutdown()
1671 : envs_lock_("JVMTI Environment List Lock", art::LockLevel::kPostMutatorTopLockLevel), in EventHandler()