Home | History | Annotate | Download | only in runtime

Lines Matching defs:Instrumentation

17 #include "instrumentation.h"
44 namespace instrumentation {
48 // Instrumentation works on non-inlined frames by updating returned PCs
55 explicit InstallStubsClassVisitor(Instrumentation* instrumentation)
56 : instrumentation_(instrumentation) {}
64 Instrumentation* const instrumentation_;
68 Instrumentation::Instrumentation()
90 void Instrumentation::InstallStubsForClass(mirror::Class* klass) {
108 bool Instrumentation::NeedDebugVersionForBootImageCode(ArtMethod* method, const void* code) const
116 void Instrumentation::InstallStubsForMethod(ArtMethod* method) {
148 // class, all its static methods code will be set to the instrumentation entry point.
153 // Oat code should not be used. Don't install instrumentation stub and
154 // use interpreter for instrumentation.
167 // Places the instrumentation exit pc as the return PC for every quick frame. This also allows
169 // Since we may already have done this previously, we need to push new instrumentation frame before
170 // existing instrumentation frames.
212 // need to push a DEX pc into the dex_pcs_ list to match size of instrumentation stack.
230 // We've reached a frame which has already been installed with instrumentation exit stub.
231 // We should have already installed instrumentation on previous frames.
252 // Insert frame at the right position so we do not corrupt the instrumentation stack.
253 // Instrumentation stack frames are in descending frame id order.
285 Instrumentation* instrumentation = reinterpret_cast<Instrumentation*>(arg);
292 if (instrumentation->ShouldNotifyMethodEnterExitEvents()) {
299 instrumentation->MethodEnterEvent(thread, (*ssi).this_object_, (*ssi).method_, 0);
305 instrumentation->MethodEnterEvent(thread, (*isi).this_object_, (*isi).method_, dex_pc);
312 void Instrumentation::InstrumentThreadStack(Thread* thread) {
317 // Removes the instrumentation exit pc as the return PC for every quick frame.
324 Instrumentation* instrumentation)
328 instrumentation_(instrumentation),
384 Instrumentation
385 std::deque<instrumentation::InstrumentationStackFrame>* const instrumentation_stack_;
393 std::deque<instrumentation::InstrumentationStackFrame>* stack = thread->GetInstrumentationStack();
395 Instrumentation* instrumentation = reinterpret_cast<Instrumentation*>(arg);
398 RestoreStackVisitor visitor(thread, instrumentation_exit_pc, instrumentation);
407 static bool HasEvent(Instrumentation::InstrumentationEvent expected, uint32_t events) {
411 static void PotentiallyAddListenerTo(Instrumentation::InstrumentationEvent event,
432 void Instrumentation::AddListener(InstrumentationListener* listener, uint32_t events) {
482 static void PotentiallyRemoveListenerFrom(Instrumentation::InstrumentationEvent event,
509 void Instrumentation::RemoveListener(InstrumentationListener* listener, uint32_t events) {
559 Instrumentation::InstrumentationLevel Instrumentation::GetCurrentInstrumentationLevel() const {
569 void Instrumentation::ConfigureStubs(const char* key, InstrumentationLevel desired_level) {
570 // Store the instrumentation level for this key or remove it.
572 // The client no longer needs instrumentation.
575 // The client needs instrumentation.
579 // Look for the highest required instrumentation level.
626 // the instrumentation exit pc.
636 void Instrumentation::SetEntrypointsInstrumented(bool instrumented) {
655 void Instrumentation::InstrumentQuickAllocEntryPoints() {
660 void Instrumentation::UninstrumentQuickAllocEntryPoints() {
665 void Instrumentation::InstrumentQuickAllocEntryPointsLocked() {
673 void Instrumentation::UninstrumentQuickAllocEntryPointsLocked() {
682 void Instrumentation::ResetQuickAllocEntryPoints() {
690 void Instrumentation::UpdateMethodsCodeImpl(ArtMethod* method, const void* quick_code) {
712 void Instrumentation::UpdateMethodsCode(ArtMethod* method, const void* quick_code) {
717 void Instrumentation::UpdateMethodsCodeFromDebugger(ArtMethod* method, const void* quick_code) {
724 bool Instrumentation::AddDeoptimizedMethod(ArtMethod* method) {
734 bool Instrumentation::IsDeoptimizedMethod(ArtMethod* method) {
738 ArtMethod* Instrumentation::BeginDeoptimizedMethod() {
746 bool Instrumentation::RemoveDeoptimizedMethod(ArtMethod* method) {
755 bool Instrumentation::IsDeoptimizedMethodsEmpty() const {
759 void Instrumentation::Deoptimize(ArtMethod* method) {
774 // Install instrumentation exit stub and instrumentation frames. We may already have installed
782 void Instrumentation::Undeoptimize(ArtMethod* method) {
821 bool Instrumentation::IsDeoptimized(ArtMethod* method) {
827 void Instrumentation::EnableDeoptimization() {
834 void Instrumentation::DisableDeoptimization(const char* key) {
856 // Indicates if instrumentation should notify method enter/exit events to the listeners.
857 bool Instrumentation::ShouldNotifyMethodEnterExitEvents() const {
864 void Instrumentation::DeoptimizeEverything(const char* key) {
869 void Instrumentation::UndeoptimizeEverything(const char* key) {
875 void Instrumentation::EnableMethodTracing(const char* key, bool needs_interpreter) {
885 void Instrumentation::DisableMethodTracing(const char* key) {
889 const void* Instrumentation::GetQuickCodeFor(ArtMethod* method, size_t pointer_size) const {
905 void Instrumentation::MethodEnterEventImpl(Thread* thread, mirror::Object* this_object,
917 void Instrumentation::MethodExitEventImpl(Thread* thread, mirror::Object* this_object,
929 void Instrumentation::MethodUnwindEvent(Thread* thread, mirror::Object* this_object,
941 void Instrumentation::DexPcMovedEventImpl(Thread* thread, mirror::Object* this_object,
951 void Instrumentation::BranchImpl(Thread* thread,
962 void Instrumentation::InvokeVirtualOrInterfaceImpl(Thread* thread,
977 void Instrumentation::FieldReadEventImpl(Thread* thread, mirror::Object* this_object,
987 void Instrumentation::FieldWriteEventImpl(Thread* thread, mirror::Object* this_object,
997 void Instrumentation::ExceptionCaughtEvent(Thread* thread,
1012 size_t Instrumentation::ComputeFrameId(Thread* self,
1032 void Instrumentation::PushInstrumentationStackFrame(Thread* self, mirror::Object* this_object,
1037 std::deque<instrumentation::InstrumentationStackFrame>* stack = self->GetInstrumentationStack();
1041 instrumentation::InstrumentationStackFrame instrumentation_frame(this_object, method, lr,
1050 TwoWordReturn Instrumentation::PopInstrumentationStackFrame(Thread* self, uintptr_t* return_pc,
1054 std::deque<instrumentation::InstrumentationStackFrame>* stack = self->GetInstrumentationStack();
1113 void Instrumentation::PopMethodForUnwind(Thread* self, bool is_deoptimization) const {
1115 std::deque<instrumentation::InstrumentationStackFrame>* stack = self->GetInstrumentationStack();
1146 } // namespace instrumentation