Enhance the jit profiler to print more statistics and be more verbose.
Specifically, the per-trace invocation percentage is printed now.
D/dalvikvm( 671): TRACEPROFILE 0x42b6eed8 15449863 2.13% [0(+2), 253] Ljava/nio/Buffer;position;()I
D/dalvikvm( 671): TRACEPROFILE 0x42b7b3ac 15410023 2.13% [0x4(+3), 450] Lorg/apache/xml/serializer/CharInfo;shouldMapTextChar;(I)Z
D/dalvikvm( 671): TRACEPROFILE 0x42b7b2cc 15346582 2.12% [0(+2), 449] Lorg/apache/xml/serializer/CharInfo;shouldMapTextChar;(I)Z
D/dalvikvm( 671): TRACEPROFILE 0x42b7b40c 15013650 2.07% [0xb4(+2), 1527] Lorg/apache/xml/serializer/ToStream;characters;([CII)V
D/dalvikvm( 671): TRACEPROFILE 0x42b7b4f0 14907957 2.06% [0xc7(+2), 1537] Lorg/apache/xml/serializer/ToStream;characters;([CII)V
D/dalvikvm( 671): TRACEPROFILE 0x42b7b308 14898588 2.06% [0xad(+3), 1525] Lorg/apache/xml/serializer/ToStream;characters;([CII)V
D/dalvikvm( 671): TRACEPROFILE 0x42b7b52c 14798762 2.04% [0xc4(+2), 1523] Lorg/apache/xml/serializer/ToStream;characters;([CII)V
D/dalvikvm( 671): TRACEPROFILE 0x42b7b570 14763770 2.04% [0xf3(+2), 1577] Lorg/apache/xml/serializer/ToStream;characters;([CII)V
And the top 10 traces will be recompiled in verbose mode to facilitate code
quality analysis.
diff --git a/vm/compiler/Compiler.c b/vm/compiler/Compiler.c
index 8297131..a353b86 100644
--- a/vm/compiler/Compiler.c
+++ b/vm/compiler/Compiler.c
@@ -532,6 +532,12 @@
{
void *threadReturn;
+ if (gDvm.verboseShutdown) {
+ dvmCompilerDumpStats();
+ while (gDvmJit.compilerQueueLength)
+ sleep(5);
+ }
+
if (gDvmJit.compilerHandle) {
gDvmJit.haltCompilerThread = true;
@@ -546,9 +552,6 @@
LOGD("Compiler thread has shut down\n");
}
- if (gDvm.verboseShutdown)
- dvmCompilerDumpStats();
-
dvmDestroyMutex(&gDvmJit.tableLock);
dvmDestroyMutex(&gDvmJit.compilerLock);
dvmDestroyMutex(&gDvmJit.compilerICPatchLock);