Commit 07344a40 authored by Jeff Hao's avatar Jeff Hao
Browse files

Change IsMethodTracingActive to GetMethodTracingMode.

This allows traceview to tell whether tracing is active, and whether
it is sampling or method tracing.

Bug: 9968521

Change-Id: I72100d1536ea3168998110ec1cfa5a183b55a67c
(cherry picked from commit 9d3a0a2e253aecd07c4a053c19cf9b0ccaa2db49)
parent 8dd134b6
......@@ -691,12 +691,18 @@ static u4 getClockOverhead()
}
/*
* Returns "true" if method tracing is currently active.
* Indicates if method tracing is active and what kind of tracing is active.
*/
bool dvmIsMethodTraceActive()
TracingMode dvmGetMethodTracingMode()
{
const MethodTraceState* state = &gDvm.methodTrace;
return state->traceEnabled;
if (!state->traceEnabled) {
return TRACING_INACTIVE;
} else if (state->samplingEnabled) {
return SAMPLE_PROFILING_ACTIVE;
} else {
return METHOD_TRACING_ACTIVE;
}
}
/*
......
......@@ -87,9 +87,18 @@ struct AllocProfState {
*/
void dvmMethodTraceStart(const char* traceFileName, int traceFd, int bufferSize,
int flags, bool directToDdms, bool samplingEnabled, int intervalUs);
bool dvmIsMethodTraceActive(void);
void dvmMethodTraceStop(void);
/*
* Returns current method tracing mode.
*/
enum TracingMode {
TRACING_INACTIVE,
METHOD_TRACING_ACTIVE,
SAMPLE_PROFILING_ACTIVE,
};
TracingMode dvmGetMethodTracingMode(void);
/*
* Start/stop emulator tracing.
*/
......
......@@ -1660,8 +1660,9 @@ void dvmInitializeInterpBreak(Thread* thread)
if (gDvm.instructionCountEnableCount > 0) {
dvmEnableSubMode(thread, kSubModeInstCounting);
}
if (dvmIsMethodTraceActive()) {
if (gDvm.methodTrace.samplingEnabled) {
TracingMode mode = dvmGetMethodTracingMode();
if (mode != TRACING_INACTIVE) {
if (mode == SAMPLE_PROFILING_ACTIVE) {
dvmEnableSubMode(thread, kSubModeSampleTrace);
} else {
dvmEnableSubMode(thread, kSubModeMethodTrace);
......
......@@ -301,16 +301,16 @@ static void Dalvik_dalvik_system_VMDebug_startMethodTracingFilename(const u4* ar
}
/*
* static boolean isMethodTracingActive()
* static int getMethodTracingMode()
*
* Determine whether method tracing is currently active.
* Determine whether method tracing is currently active and what type is active.
*/
static void Dalvik_dalvik_system_VMDebug_isMethodTracingActive(const u4* args,
static void Dalvik_dalvik_system_VMDebug_getMethodTracingMode(const u4* args,
JValue* pResult)
{
UNUSED_PARAMETER(args);
RETURN_BOOLEAN(dvmIsMethodTraceActive());
RETURN_INT(dvmGetMethodTracingMode());
}
/*
......@@ -827,8 +827,8 @@ const DalvikNativeMethod dvm_dalvik_system_VMDebug[] = {
Dalvik_dalvik_system_VMDebug_startMethodTracingFd },
{ "startMethodTracingFilename", "(Ljava/lang/String;II)V",
Dalvik_dalvik_system_VMDebug_startMethodTracingFilename },
{ "isMethodTracingActive", "()Z",
Dalvik_dalvik_system_VMDebug_isMethodTracingActive },
{ "getMethodTracingMode", "()I",
Dalvik_dalvik_system_VMDebug_getMethodTracingMode },
{ "stopMethodTracing", "()V",
Dalvik_dalvik_system_VMDebug_stopMethodTracing },
{ "startEmulatorTracing", "()V",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment