summaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorJeff Hao <jeffhao@google.com>2013-08-29 14:04:34 -0700
committerJeff Hao <jeffhao@google.com>2013-08-30 18:02:06 +0000
commit07344a400805d3d267352bf2694e728b29aa8ea8 (patch)
tree065786a773ec96767d26cdf9c76ea155e5e2a8b7 /vm
parent8dd134b6a68f79c5369b6015a543eb7c0f5e649e (diff)
downloadandroid_dalvik-07344a400805d3d267352bf2694e728b29aa8ea8.tar.gz
android_dalvik-07344a400805d3d267352bf2694e728b29aa8ea8.tar.bz2
android_dalvik-07344a400805d3d267352bf2694e728b29aa8ea8.zip
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)
Diffstat (limited to 'vm')
-rw-r--r--vm/Profile.cpp12
-rw-r--r--vm/Profile.h11
-rw-r--r--vm/interp/Interp.cpp5
-rw-r--r--vm/native/dalvik_system_VMDebug.cpp12
4 files changed, 28 insertions, 12 deletions
diff --git a/vm/Profile.cpp b/vm/Profile.cpp
index 08e146301..866311cda 100644
--- a/vm/Profile.cpp
+++ b/vm/Profile.cpp
@@ -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;
+ }
}
/*
diff --git a/vm/Profile.h b/vm/Profile.h
index 6a2c4be86..9059181a9 100644
--- a/vm/Profile.h
+++ b/vm/Profile.h
@@ -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);
diff --git a/vm/interp/Interp.cpp b/vm/interp/Interp.cpp
index 2b13bd8e4..42e2ecad7 100644
--- a/vm/interp/Interp.cpp
+++ b/vm/interp/Interp.cpp
@@ -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);
diff --git a/vm/native/dalvik_system_VMDebug.cpp b/vm/native/dalvik_system_VMDebug.cpp
index 8ba304a6e..53773575f 100644
--- a/vm/native/dalvik_system_VMDebug.cpp
+++ b/vm/native/dalvik_system_VMDebug.cpp
@@ -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",