summaryrefslogtreecommitdiffstats
path: root/vm/compiler/Compiler.h
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2011-01-19 15:31:15 -0800
committerbuzbee <buzbee@google.com>2011-01-19 16:39:41 -0800
commit18fba346582c08d81aa96d9508c0e935bad5f36f (patch)
treef69072fa267c06e5a3036c76fc37ba1df9c88f67 /vm/compiler/Compiler.h
parent9238eb89ea5f0564047a2a2f040a2229d42f6f63 (diff)
downloadandroid_dalvik-18fba346582c08d81aa96d9508c0e935bad5f36f.tar.gz
android_dalvik-18fba346582c08d81aa96d9508c0e935bad5f36f.tar.bz2
android_dalvik-18fba346582c08d81aa96d9508c0e935bad5f36f.zip
Support traceview-style profiling in all builds
This change builds on an earlier bccheng change that allowed JIT'd code to avoid reverting to the debug portable interpeter when doing traceview-style method profiling. That CL introduced a new traceview build (libdvm_traceview) because the performance delta was too great to enable the capability for all builds. In this CL, we remove the libdvm_traceview build and provide full-speed method tracing in all builds. This is done by introducing "_PROF" versions of invoke and return templates used by the JIT. Normally, these templates are not used, and performace in unaffected. However, when method profiling is enabled, all existing translation are purged and new translations are created using the _PROF templates. These templates introduce a smallish performance penalty above and beyond the actual tracing cost, but again are only used when tracing has been enabled. Strictly speaking, there is a slight burden that is placed on invokes and returns in the non-tracing case - on the order of an additional 3 or 4 cycles per invoke/return. Those operations are already heavyweight enough that I was unable to measure the added cost in benchmarks. Change-Id: Ic09baf4249f1e716e136a65458f4e06cea35fc18
Diffstat (limited to 'vm/compiler/Compiler.h')
-rw-r--r--vm/compiler/Compiler.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/vm/compiler/Compiler.h b/vm/compiler/Compiler.h
index cd9d21bb3..d29520d2e 100644
--- a/vm/compiler/Compiler.h
+++ b/vm/compiler/Compiler.h
@@ -87,6 +87,7 @@ typedef struct JitTranslationInfo {
bool discardResult; // Used for debugging divergence and IC patching
bool methodCompilationAborted; // Cannot compile the whole method
Thread *requestingThread; // For debugging purpose
+ int cacheVersion; // Used to identify stale trace requests
} JitTranslationInfo;
typedef enum WorkOrderKind {