Changed tracer to use an instance to hold state instead of statics.
Change-Id: I2fdcf5de7fbc745273b1a33cb409d13e72d24ab4
diff --git a/src/runtime_support.cc b/src/runtime_support.cc
index cdd773f..2ee64a1 100644
--- a/src/runtime_support.cc
+++ b/src/runtime_support.cc
@@ -141,7 +141,7 @@
extern "C" void artThrowStackOverflowFromCode(Method* method, Thread* thread, Method** sp) {
FinishCalleeSaveFrameSetup(thread, sp, Runtime::kSaveAll);
// Remove extra entry pushed onto second stack during method tracing
- if (Trace::IsMethodTracingActive()) {
+ if (Runtime::Current()->IsMethodTracingActive()) {
artTraceMethodUnwindFromCode(thread);
}
thread->SetStackEndForStackOverflow(); // Allow space on the stack for constructor to execute
@@ -1183,30 +1183,33 @@
}
extern "C" const void* artTraceMethodEntryFromCode(Method* method, Thread* self, uintptr_t lr) {
+ Trace* tracer = Runtime::Current()->GetTracer();
TraceStackFrame trace_frame = TraceStackFrame(method, lr);
self->PushTraceStackFrame(trace_frame);
- Trace::LogMethodTraceEvent(self, method, Trace::kMethodTraceEnter);
+ tracer->LogMethodTraceEvent(self, method, Trace::kMethodTraceEnter);
- return Trace::GetSavedCodeFromMap(method);
+ return tracer->GetSavedCodeFromMap(method);
}
extern "C" uintptr_t artTraceMethodExitFromCode() {
+ Trace* tracer = Runtime::Current()->GetTracer();
TraceStackFrame trace_frame = Thread::Current()->PopTraceStackFrame();
Method* method = trace_frame.method_;
uintptr_t lr = trace_frame.return_pc_;
- Trace::LogMethodTraceEvent(Thread::Current(), method, Trace::kMethodTraceExit);
+ tracer->LogMethodTraceEvent(Thread::Current(), method, Trace::kMethodTraceExit);
return lr;
}
uintptr_t artTraceMethodUnwindFromCode(Thread* self) {
+ Trace* tracer = Runtime::Current()->GetTracer();
TraceStackFrame trace_frame = self->PopTraceStackFrame();
Method* method = trace_frame.method_;
uintptr_t lr = trace_frame.return_pc_;
- Trace::LogMethodTraceEvent(self, method, Trace::kMethodTraceUnwind);
+ tracer->LogMethodTraceEvent(self, method, Trace::kMethodTraceUnwind);
return lr;
}