Updates to tracer to log events.
The tracer can now generates traces for ddms or output to a logfile.
Also includes bugfixes to allow stack walking to work properly when
tracing.
Change-Id: I8894272d9a678eeb1d376734f7822daf2ab298e4
diff --git a/src/runtime_support.cc b/src/runtime_support.cc
index 4eaa760..cdd773f 100644
--- a/src/runtime_support.cc
+++ b/src/runtime_support.cc
@@ -1183,10 +1183,11 @@
}
extern "C" const void* artTraceMethodEntryFromCode(Method* method, Thread* self, uintptr_t lr) {
- LOG(INFO) << "Tracer - entering: " << PrettyMethod(method);
TraceStackFrame trace_frame = TraceStackFrame(method, lr);
self->PushTraceStackFrame(trace_frame);
+ Trace::LogMethodTraceEvent(self, method, Trace::kMethodTraceEnter);
+
return Trace::GetSavedCodeFromMap(method);
}
@@ -1194,7 +1195,8 @@
TraceStackFrame trace_frame = Thread::Current()->PopTraceStackFrame();
Method* method = trace_frame.method_;
uintptr_t lr = trace_frame.return_pc_;
- LOG(INFO) << "Tracer - exiting: " << PrettyMethod(method);
+
+ Trace::LogMethodTraceEvent(Thread::Current(), method, Trace::kMethodTraceExit);
return lr;
}
@@ -1203,7 +1205,8 @@
TraceStackFrame trace_frame = self->PopTraceStackFrame();
Method* method = trace_frame.method_;
uintptr_t lr = trace_frame.return_pc_;
- LOG(INFO) << "Tracer - unwinding: " << PrettyMethod(method);
+
+ Trace::LogMethodTraceEvent(self, method, Trace::kMethodTraceUnwind);
return lr;
}