Lines Matching refs:art
67 art::ArtField* ThreadUtil::context_class_loader_ = nullptr;
69 ScopedNoUserCodeSuspension::ScopedNoUserCodeSuspension(art::Thread* self) : self_(self) { in ScopedNoUserCodeSuspension()
70 DCHECK_EQ(self, art::Thread::Current()); in ScopedNoUserCodeSuspension()
74 art::Locks::user_code_suspension_lock_->AssertNotHeld(self_); in ScopedNoUserCodeSuspension()
77 art::Locks::user_code_suspension_lock_->ExclusiveLock(self_); in ScopedNoUserCodeSuspension()
79 art::Locks::user_code_suspension_lock_->ExclusiveUnlock(self_); in ScopedNoUserCodeSuspension()
83 art::Locks::user_code_suspension_lock_->AssertHeld(self_); in ScopedNoUserCodeSuspension()
90 art::Locks::user_code_suspension_lock_->ExclusiveUnlock(self_); in ~ScopedNoUserCodeSuspension()
93 struct ThreadCallback : public art::ThreadLifecycleCallback {
94 jthread GetThreadObject(art::Thread* self) REQUIRES_SHARED(art::Locks::mutator_lock_) { in GetThreadObject()
102 void Post(art::Thread* self) REQUIRES_SHARED(art::Locks::mutator_lock_) { in Post()
103 DCHECK_EQ(self, art::Thread::Current()); in Post()
105 art::ScopedThreadSuspension sts(self, art::ThreadState::kNative); in Post()
111 void ThreadStart(art::Thread* self) override REQUIRES_SHARED(art::Locks::mutator_lock_) { in ThreadStart()
127 if (art::kIsDebugBuild) { in ThreadStart()
131 name != art::metrics::MetricsReporter::kBackgroundThreadName && in ThreadStart()
144 void ThreadDeath(art::Thread* self) override REQUIRES_SHARED(art::Locks::mutator_lock_) { in ThreadDeath()
155 art::Runtime* runtime = art::Runtime::Current(); in Register()
160 art::ScopedThreadStateChange stsc(art::Thread::Current(), in Register()
161 art::ThreadState::kWaitingForDebuggerToAttach); in Register()
162 art::ScopedSuspendAll ssa("Add thread callback"); in Register()
171 gThreadCallback.Post<ArtJvmtiEvent::kThreadStart>(art::Thread::Current()); in VMInitEventSent()
175 static void WaitForSystemDaemonStart(art::Thread* self) REQUIRES_SHARED(art::Locks::mutator_lock_) { in WaitForSystemDaemonStart()
176 art::WellKnownClasses::java_lang_Daemons_waitForDaemonStart->InvokeStatic<'V'>(self); in WaitForSystemDaemonStart()
187 art::Thread* self = art::Thread::Current(); in CacheData()
188 art::ScopedObjectAccess soa(self); in CacheData()
189 art::ObjPtr<art::mirror::Class> thread_class = art::WellKnownClasses::java_lang_Thread.Get(); in CacheData()
200 art::ScopedThreadStateChange stsc(art::Thread::Current(), in Unregister()
201 art::ThreadState::kWaitingForDebuggerToAttach); in Unregister()
202 art::ScopedSuspendAll ssa("Remove thread callback"); in Unregister()
203 art::Runtime* runtime = art::Runtime::Current(); in Unregister()
208 art::Thread* self = art::Thread::Current(); in GetCurrentThread()
210 art::ScopedObjectAccess soa(self); in GetCurrentThread()
225 const art::ScopedObjectAccessAlreadyRunnable& soa, in GetNativeThread()
226 /*out*/ art::Thread** thr, in GetNativeThread()
228 art::ScopedExceptionStorage sse(soa.Self()); in GetNativeThread()
230 *thr = art::Thread::Current(); in GetNativeThread()
233 art::ObjPtr<art::mirror::Object> othread = soa.Decode<art::mirror::Object>(thread); in GetNativeThread()
234 if (!othread->InstanceOf(art::WellKnownClasses::java_lang_Thread.Get())) { in GetNativeThread()
238 *thr = art::Thread::FromManagedThread(soa, thread); in GetNativeThread()
244 const art::ScopedObjectAccessAlreadyRunnable& soa, in GetAliveNativeThread()
245 /*out*/ art::Thread** thr, in GetAliveNativeThread()
249 } else if (*thr == nullptr || (*thr)->GetState() == art::ThreadState::kTerminated) { in GetAliveNativeThread()
265 art::Thread* self = art::Thread::Current(); in GetThreadInfo()
266 art::ScopedObjectAccess soa(self); in GetThreadInfo()
267 art::MutexLock mu(self, *art::Locks::thread_list_lock_); in GetThreadInfo()
269 art::Thread* target; in GetThreadInfo()
291 art::ObjPtr<art::mirror::Object> peer = target->LockedGetPeerFromOtherThread(); in GetThreadInfo()
297 art::ArtField* f = art::WellKnownClasses::java_lang_Thread_group; in GetThreadInfo()
299 art::ObjPtr<art::mirror::Object> group = f->GetObject(peer); in GetThreadInfo()
309 art::ObjPtr<art::mirror::Object> ccl = peer != nullptr in GetThreadInfo()
318 art::ObjPtr<art::mirror::Object> peer = soa.Decode<art::mirror::Object>(thread); in GetThreadInfo()
322 art::ArtField* f = art::WellKnownClasses::java_lang_Thread_name; in GetThreadInfo()
324 art::ObjPtr<art::mirror::Object> name = f->GetObject(peer); in GetThreadInfo()
343 art::ArtField* f = art::WellKnownClasses::java_lang_Thread_priority; in GetThreadInfo()
350 art::ArtField* f = art::WellKnownClasses::java_lang_Thread_daemon; in GetThreadInfo()
357 art::ArtField* f = art::WellKnownClasses::java_lang_Thread_group; in GetThreadInfo()
359 art::ObjPtr<art::mirror::Object> group = f->GetObject(peer); in GetThreadInfo()
367 art::ObjPtr<art::mirror::Object> ccl = peer != nullptr in GetThreadInfo()
381 art::Thread* native_thread;
382 art::ThreadState art_state;
387 static InternalThreadState GetNativeThreadState(art::Thread* target) in GetNativeThreadState()
388 REQUIRES_SHARED(art::Locks::mutator_lock_) in GetNativeThreadState()
389 REQUIRES(art::Locks::thread_list_lock_, art::Locks::user_code_suspension_lock_) { in GetNativeThreadState()
391 art::MutexLock tscl_mu(art::Thread::Current(), *art::Locks::thread_suspend_count_lock_); in GetNativeThreadState()
394 thread_state.art_state = art::ThreadState::kStarting; in GetNativeThreadState()
404 art::ThreadState internal_thread_state = state.art_state; in GetJvmtiThreadStateFromInternal()
423 case art::ThreadState::kRunnable: in GetJvmtiThreadStateFromInternal()
424 case art::ThreadState::kWaitingWeakGcRootRead: in GetJvmtiThreadStateFromInternal()
425 case art::ThreadState::kSuspended: in GetJvmtiThreadStateFromInternal()
434 case art::ThreadState::kNative: in GetJvmtiThreadStateFromInternal()
441 case art::ThreadState::kBlocked: in GetJvmtiThreadStateFromInternal()
445 case art::ThreadState::kWaiting: in GetJvmtiThreadStateFromInternal()
451 case art::ThreadState::kTimedWaiting: in GetJvmtiThreadStateFromInternal()
457 case art::ThreadState::kSleeping: in GetJvmtiThreadStateFromInternal()
465 case art::ThreadState::kWaitingForDebuggerSend: in GetJvmtiThreadStateFromInternal()
466 case art::ThreadState::kWaitingForDebuggerToAttach: in GetJvmtiThreadStateFromInternal()
467 case art::ThreadState::kWaitingInMainDebuggerLoop: in GetJvmtiThreadStateFromInternal()
468 case art::ThreadState::kWaitingForDebuggerSuspension: in GetJvmtiThreadStateFromInternal()
469 case art::ThreadState::kWaitingForLockInflation: in GetJvmtiThreadStateFromInternal()
470 case art::ThreadState::kWaitingForTaskProcessor: in GetJvmtiThreadStateFromInternal()
471 case art::ThreadState::kWaitingForGcToComplete: in GetJvmtiThreadStateFromInternal()
472 case art::ThreadState::kWaitingForCheckPointsToRun: in GetJvmtiThreadStateFromInternal()
473 case art::ThreadState::kWaitingPerformingGc: in GetJvmtiThreadStateFromInternal()
474 case art::ThreadState::kWaitingForJniOnLoad: in GetJvmtiThreadStateFromInternal()
475 case art::ThreadState::kWaitingInMainSignalCatcherLoop: in GetJvmtiThreadStateFromInternal()
476 case art::ThreadState::kWaitingForSignalCatcherOutput: in GetJvmtiThreadStateFromInternal()
477 case art::ThreadState::kWaitingForDeoptimization: in GetJvmtiThreadStateFromInternal()
478 case art::ThreadState::kWaitingForMethodTracingStart: in GetJvmtiThreadStateFromInternal()
479 case art::ThreadState::kWaitingForVisitObjects: in GetJvmtiThreadStateFromInternal()
480 case art::ThreadState::kWaitingForGetObjectsAllocated: in GetJvmtiThreadStateFromInternal()
481 case art::ThreadState::kWaitingForGcThreadFlip: in GetJvmtiThreadStateFromInternal()
482 case art::ThreadState::kNativeForAbort: in GetJvmtiThreadStateFromInternal()
488 case art::ThreadState::kObsoleteRunnable: // Obsolete value. in GetJvmtiThreadStateFromInternal()
489 case art::ThreadState::kStarting: in GetJvmtiThreadStateFromInternal()
490 case art::ThreadState::kTerminated: in GetJvmtiThreadStateFromInternal()
491 case art::ThreadState::kInvalidState: in GetJvmtiThreadStateFromInternal()
503 case art::ThreadState::kTerminated: in GetJavaStateFromInternal()
506 case art::ThreadState::kRunnable: in GetJavaStateFromInternal()
507 case art::ThreadState::kNative: in GetJavaStateFromInternal()
508 case art::ThreadState::kWaitingWeakGcRootRead: in GetJavaStateFromInternal()
509 case art::ThreadState::kSuspended: in GetJavaStateFromInternal()
512 case art::ThreadState::kTimedWaiting: in GetJavaStateFromInternal()
513 case art::ThreadState::kSleeping: in GetJavaStateFromInternal()
516 case art::ThreadState::kBlocked: in GetJavaStateFromInternal()
519 case art::ThreadState::kStarting: in GetJavaStateFromInternal()
522 case art::ThreadState::kWaiting: in GetJavaStateFromInternal()
523 case art::ThreadState::kWaitingForTaskProcessor: in GetJavaStateFromInternal()
524 case art::ThreadState::kWaitingForLockInflation: in GetJavaStateFromInternal()
525 case art::ThreadState::kWaitingForGcToComplete: in GetJavaStateFromInternal()
526 case art::ThreadState::kWaitingPerformingGc: in GetJavaStateFromInternal()
527 case art::ThreadState::kWaitingForCheckPointsToRun: in GetJavaStateFromInternal()
528 case art::ThreadState::kWaitingForDebuggerSend: in GetJavaStateFromInternal()
529 case art::ThreadState::kWaitingForDebuggerToAttach: in GetJavaStateFromInternal()
530 case art::ThreadState::kWaitingInMainDebuggerLoop: in GetJavaStateFromInternal()
531 case art::ThreadState::kWaitingForDebuggerSuspension: in GetJavaStateFromInternal()
532 case art::ThreadState::kWaitingForDeoptimization: in GetJavaStateFromInternal()
533 case art::ThreadState::kWaitingForGetObjectsAllocated: in GetJavaStateFromInternal()
534 case art::ThreadState::kWaitingForJniOnLoad: in GetJavaStateFromInternal()
535 case art::ThreadState::kWaitingForSignalCatcherOutput: in GetJavaStateFromInternal()
536 case art::ThreadState::kWaitingInMainSignalCatcherLoop: in GetJavaStateFromInternal()
537 case art::ThreadState::kWaitingForMethodTracingStart: in GetJavaStateFromInternal()
538 case art::ThreadState::kWaitingForVisitObjects: in GetJavaStateFromInternal()
539 case art::ThreadState::kWaitingForGcThreadFlip: in GetJavaStateFromInternal()
540 case art::ThreadState::kNativeForAbort: in GetJavaStateFromInternal()
543 case art::ThreadState::kObsoleteRunnable: in GetJavaStateFromInternal()
544 case art::ThreadState::kInvalidState: in GetJavaStateFromInternal()
552 void ThreadUtil::SuspendCheck(art::Thread* self) { in SuspendCheck()
553 DCHECK(!self->ReadFlag(art::ThreadFlag::kSuspensionImmune)); in SuspendCheck()
554 art::ScopedObjectAccess soa(self); in SuspendCheck()
559 bool ThreadUtil::WouldSuspendForUserCodeLocked(art::Thread* self) { in WouldSuspendForUserCodeLocked()
560 DCHECK(self == art::Thread::Current()); in WouldSuspendForUserCodeLocked()
561 art::MutexLock tscl_mu(self, *art::Locks::thread_suspend_count_lock_); in WouldSuspendForUserCodeLocked()
565 bool ThreadUtil::WouldSuspendForUserCode(art::Thread* self) { in WouldSuspendForUserCode()
566 DCHECK(self == art::Thread::Current()); in WouldSuspendForUserCode()
567 art::MutexLock ucsl_mu(self, *art::Locks::user_code_suspension_lock_); in WouldSuspendForUserCode()
578 art::Thread* self = art::Thread::Current(); in GetThreadState()
582 art::ScopedObjectAccess soa(self); in GetThreadState()
583 art::MutexLock tll_mu(self, *art::Locks::thread_list_lock_); in GetThreadState()
585 art::Thread* target = nullptr; in GetThreadState()
590 if (state.art_state != art::ThreadState::kStarting) { in GetThreadState()
608 DCHECK_EQ(state.art_state, art::ThreadState::kStarting); in GetThreadState()
615 art::ScopedObjectAccess soa(self); in GetThreadState()
616 art::StackHandleScope<1> hs(self); in GetThreadState()
619 art::Handle<art::mirror::Object> peer(hs.NewHandle(soa.Decode<art::mirror::Object>(thread))); in GetThreadState()
620 art::ObjPtr<art::mirror::Class> thread_klass = art::WellKnownClasses::java_lang_Thread.Get(); in GetThreadState()
624 art::ArtField* started_field = thread_klass->FindDeclaredInstanceField("started", "Z"); in GetThreadState()
641 art::Thread* current = art::Thread::Current(); in GetAllThreads()
643 art::ScopedObjectAccess soa(current); in GetAllThreads()
645 art::MutexLock mu(current, *art::Locks::thread_list_lock_); in GetAllThreads()
646 std::list<art::Thread*> thread_list = art::Runtime::Current()->GetThreadList()->GetList(); in GetAllThreads()
648 std::vector<art::ThreadExitFlag> tefs(thread_list.size()); in GetAllThreads()
650 for (art::Thread* thd : thread_list) { in GetAllThreads()
655 std::vector<art::ObjPtr<art::mirror::Object>> peers; in GetAllThreads()
658 for (art::Thread* thread : thread_list) { in GetAllThreads()
659 art::ThreadExitFlag* tef = &*i++; in GetAllThreads()
663 art::ObjPtr<art::mirror::Object> peer = thread->LockedGetPeerFromOtherThread(tef); in GetAllThreads()
692 static void RemoveTLSData(art::Thread* target, void* ctx) REQUIRES(art::Locks::thread_list_lock_) { in RemoveTLSData()
694 art::Locks::thread_list_lock_->AssertHeld(art::Thread::Current()); in RemoveTLSData()
702 art::Thread* self = art::Thread::Current(); in RemoveEnvironment()
703 art::MutexLock mu(self, *art::Locks::thread_list_lock_); in RemoveEnvironment()
704 art::ThreadList* list = art::Runtime::Current()->GetThreadList(); in RemoveEnvironment()
709 art::Thread* self = art::Thread::Current(); in SetThreadLocalStorage()
710 art::ScopedObjectAccess soa(self); in SetThreadLocalStorage()
711 art::MutexLock mu(self, *art::Locks::thread_list_lock_); in SetThreadLocalStorage()
712 art::Thread* target = nullptr; in SetThreadLocalStorage()
725 JvmtiGlobalTLSData* ThreadUtil::GetOrCreateGlobalTLSData(art::Thread* thread) { in GetOrCreateGlobalTLSData()
735 JvmtiGlobalTLSData* ThreadUtil::GetGlobalTLSData(art::Thread* thread) { in GetGlobalTLSData()
746 art::Thread* self = art::Thread::Current(); in GetThreadLocalStorage()
747 art::ScopedObjectAccess soa(self); in GetThreadLocalStorage()
748 art::MutexLock mu(self, *art::Locks::thread_list_lock_); in GetThreadLocalStorage()
749 art::Thread* target = nullptr; in GetThreadLocalStorage()
785 art::Thread* self = art::Thread::Attach(data->name.c_str(), true, data->thread); in AgentCallback()
790 art::ScopedObjectAccess soa(self); in AgentCallback()
802 art::MutexLock mu(art::Thread::Current(), *art::Locks::runtime_shutdown_lock_); in AgentCallback()
803 art::Runtime::Current()->EndThreadBirth(); in AgentCallback()
830 art::Runtime* runtime = art::Runtime::Current(); in RunAgentThread()
831 art::Thread* self = art::Thread::Current(); in RunAgentThread()
834 art::ScopedObjectAccess soa(self); in RunAgentThread()
835 art::ObjPtr<art::mirror::Object> othread = soa.Decode<art::mirror::Object>(thread); in RunAgentThread()
836 if (!othread->InstanceOf(art::WellKnownClasses::java_lang_Thread.Get())) { in RunAgentThread()
844 art::MutexLock mu(soa.Self(), *art::Locks::runtime_shutdown_lock_); in RunAgentThread()
865 art::ObjPtr<art::mirror::Object> name = in RunAgentThread()
866 art::WellKnownClasses::java_lang_Thread_name->GetObject( in RunAgentThread()
867 soa.Decode<art::mirror::Object>(thread)); in RunAgentThread()
882 art::MutexLock mu(self, *art::Locks::runtime_shutdown_lock_); in RunAgentThread()
891 jvmtiError ThreadUtil::SuspendOther(art::Thread* self, in SuspendOther()
900 art::ScopedObjectAccess soa(self); in SuspendOther()
901 art::MutexLock thread_list_mu(self, *art::Locks::thread_list_lock_); in SuspendOther()
902 art::Thread* target = nullptr; in SuspendOther()
907 art::ThreadState state = target->GetState(); in SuspendOther()
908 if (state == art::ThreadState::kStarting || target->IsStillStarting()) { in SuspendOther()
911 art::MutexLock thread_suspend_count_mu(self, *art::Locks::thread_suspend_count_lock_); in SuspendOther()
917 art::Thread* ret_target = art::Runtime::Current()->GetThreadList()->SuspendThreadByPeer( in SuspendOther()
918 target_jthread, art::SuspendReason::kForUserCode); in SuspendOther()
930 jvmtiError ThreadUtil::SuspendSelf(art::Thread* self) { in SuspendSelf()
931 CHECK(self == art::Thread::Current()); in SuspendSelf()
933 art::MutexLock mu(self, *art::Locks::user_code_suspension_lock_); in SuspendSelf()
934 art::MutexLock thread_list_mu(self, *art::Locks::thread_suspend_count_lock_); in SuspendSelf()
942 art::FakeMutexLock fmu(*art::Locks::thread_list_lock_); in SuspendSelf()
943 self->IncrementSuspendCount(self, nullptr, nullptr, art::SuspendReason::kForUserCode); in SuspendSelf()
954 art::Thread* self = art::Thread::Current(); in SuspendThread()
957 art::ScopedObjectAccess soa(self); in SuspendThread()
958 art::MutexLock mu(self, *art::Locks::thread_list_lock_); in SuspendThread()
959 art::Thread* target = nullptr; in SuspendThread()
978 art::Thread* self = art::Thread::Current(); in ResumeThread()
979 art::Thread* target; in ResumeThread()
987 art::ScopedObjectAccess soa(self); in ResumeThread()
988 art::MutexLock tll_mu(self, *art::Locks::thread_list_lock_); in ResumeThread()
1001 art::MutexLock thread_suspend_count_mu(self, *art::Locks::thread_suspend_count_lock_); in ResumeThread()
1010 if (!art::Runtime::Current()->GetThreadList()->Resume(target, in ResumeThread()
1011 art::SuspendReason::kForUserCode)) { in ResumeThread()
1024 art::Thread* self = art::Thread::Current(); in IsCurrentThread()
1025 art::ScopedObjectAccess soa(self); in IsCurrentThread()
1026 art::MutexLock mu(self, *art::Locks::thread_list_lock_); in IsCurrentThread()
1027 art::Thread* target = nullptr; in IsCurrentThread()
1094 art::Thread* self = art::Thread::Current(); in StopThread()
1095 art::ScopedObjectAccess soa(self); in StopThread()
1096 art::StackHandleScope<1> hs(self); in StopThread()
1100 art::ObjPtr<art::mirror::Object> obj(soa.Decode<art::mirror::Object>(exception)); in StopThread()
1104 art::Handle<art::mirror::Throwable> exc(hs.NewHandle(obj->AsThrowable())); in StopThread()
1105 art::Locks::thread_list_lock_->ExclusiveLock(self); in StopThread()
1106 art::Thread* target = nullptr; in StopThread()
1109 art::Locks::thread_list_lock_->ExclusiveUnlock(self); in StopThread()
1111 } else if (target->GetState() == art::ThreadState::kStarting || target->IsStillStarting()) { in StopThread()
1112 art::Locks::thread_list_lock_->ExclusiveUnlock(self); in StopThread()
1115 struct StopThreadClosure : public art::Closure { in StopThread()
1117 explicit StopThreadClosure(art::Handle<art::mirror::Throwable> except) : exception_(except) { } in StopThread()
1119 void Run(art::Thread* me) override REQUIRES_SHARED(art::Locks::mutator_lock_) { in StopThread()
1128 art::Handle<art::mirror::Throwable> exception_; in StopThread()
1141 art::Thread* self = art::Thread::Current(); in InterruptThread()
1142 art::ScopedObjectAccess soa(self); in InterruptThread()
1143 art::MutexLock tll_mu(self, *art::Locks::thread_list_lock_); in InterruptThread()
1144 art::Thread* target = nullptr; in InterruptThread()
1148 } else if (target->GetState() == art::ThreadState::kStarting || target->IsStillStarting()) { in InterruptThread()