void mozilla_sampler_stop() { if (!stack_key_initialized) profiler_init(); TableTicker *t = tlsTicker.get(); if (!t) { return; } bool disableJS = t->ProfileJS(); t->Stop(); delete t; tlsTicker.set(NULL); PseudoStack *stack = tlsPseudoStack.get(); ASSERT(stack != NULL); if (disableJS) stack->disableJSSampling(); sIsProfiling = false; nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService(); if (os) os->NotifyObservers(nullptr, "profiler-stopped", nullptr); }
void mozilla_sampler_stop() { TableTicker *t = mozilla::tls::get<TableTicker>(pkey_ticker); if (!t) { return; } t->Stop(); mozilla::tls::set(pkey_ticker, (Stack*)NULL); }
void mozilla_sampler_stop() { LOG("BEGIN mozilla_sampler_stop"); if (!stack_key_initialized) profiler_init(nullptr); TableTicker *t = tlsTicker.get(); if (!t) { LOG("END mozilla_sampler_stop-early"); return; } bool disableJS = t->ProfileJS(); bool unwinderThreader = t->HasUnwinderThread(); // Shut down and reap the unwinder thread. We have to do this // before stopping the sampler, so as to guarantee that the unwinder // thread doesn't try to access memory that the subsequent call to // mozilla_sampler_stop causes to be freed. if (unwinderThreader) { uwt__stop(); } t->Stop(); delete t; tlsTicker.set(nullptr); if (disableJS) { PseudoStack *stack = tlsPseudoStack.get(); ASSERT(stack != nullptr); stack->disableJSSampling(); } if (unwinderThreader) { uwt__deinit(); } mozilla::IOInterposer::Unregister(mozilla::IOInterposeObserver::OpAll, sInterposeObserver); sInterposeObserver = nullptr; sIsProfiling = false; if (Sampler::CanNotifyObservers()) { nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService(); if (os) os->NotifyObservers(nullptr, "profiler-stopped", nullptr); } LOG("END mozilla_sampler_stop"); }
void mozilla_sampler_stop() { if (!stack_key_initialized) mozilla_sampler_init(); TableTicker *t = tlsTicker.get(); if (!t) { return; } t->Stop(); delete t; tlsTicker.set(NULL); }
void mozilla_sampler_stop() { LOG("BEGIN mozilla_sampler_stop"); if (!stack_key_initialized) return; TableTicker *t = tlsTicker.get(); if (!t) { LOG("END mozilla_sampler_stop-early"); return; } bool disableJS = t->ProfileJS(); t->Stop(); delete t; tlsTicker.set(nullptr); #ifndef SPS_STANDALONE if (disableJS) { PseudoStack *stack = tlsPseudoStack.get(); ASSERT(stack != nullptr); stack->disableJSSampling(); } mozilla::IOInterposer::Unregister(mozilla::IOInterposeObserver::OpAll, sInterposeObserver); sInterposeObserver = nullptr; #endif sIsProfiling = false; #ifndef SPS_STANDALONE sIsGPUProfiling = false; sIsLayersDump = false; sIsDisplayListDump = false; sIsRestyleProfiling = false; if (Sampler::CanNotifyObservers()) { nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService(); if (os) os->NotifyObservers(nullptr, "profiler-stopped", nullptr); } #endif LOG("END mozilla_sampler_stop"); }
void mozilla_sampler_stop() { if (!stack_key_initialized) mozilla_sampler_init(); TableTicker *t = tlsTicker.get(); if (!t) { return; } bool disableJS = t->ProfileJS(); t->Stop(); delete t; tlsTicker.set(NULL); ProfileStack *stack = tlsStack.get(); ASSERT(stack != NULL); if (disableJS) stack->disableJSSampling(); }