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;
 }