OSDN Git Service

Change IsMethodTracingActive to GetMethodTracingMode.
authorJeff Hao <jeffhao@google.com>
Thu, 29 Aug 2013 21:04:34 +0000 (14:04 -0700)
committerJeff Hao <jeffhao@google.com>
Fri, 30 Aug 2013 18:02:06 +0000 (18:02 +0000)
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)

vm/Profile.cpp
vm/Profile.h
vm/interp/Interp.cpp
vm/native/dalvik_system_VMDebug.cpp

index 08e1463..866311c 100644 (file)
@@ -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;
+    }
 }
 
 /*
index 6a2c4be..9059181 100644 (file)
@@ -87,10 +87,19 @@ 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.
  */
 void dvmEmulatorTraceStart(void);
index 2b13bd8..42e2eca 100644 (file)
@@ -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);
index 8ba304a..5377357 100644 (file)
@@ -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",