summaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@android.com>2010-12-14 10:44:03 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-12-14 10:44:03 -0800
commit8f367f9c3b7100de7cf4dcbda69b85fc3b7767be (patch)
tree692b5a8235d4b3263618e8f40bddd750a5cf8116 /vm
parenta118989d1b33e1513f08863e58308e7e3a68a18a (diff)
parentcf7b2e60ee14f4634c41a1765a919286271739d8 (diff)
downloadandroid_dalvik-8f367f9c3b7100de7cf4dcbda69b85fc3b7767be.tar.gz
android_dalvik-8f367f9c3b7100de7cf4dcbda69b85fc3b7767be.tar.bz2
android_dalvik-8f367f9c3b7100de7cf4dcbda69b85fc3b7767be.zip
Merge "resolved conflicts for merge of 3b55675a to dalvik-dev" into dalvik-dev
Diffstat (limited to 'vm')
-rw-r--r--vm/Globals.h1
-rw-r--r--vm/Jni.c2
-rw-r--r--vm/Sync.c15
3 files changed, 12 insertions, 6 deletions
diff --git a/vm/Globals.h b/vm/Globals.h
index bea7c2cfe..25c485f57 100644
--- a/vm/Globals.h
+++ b/vm/Globals.h
@@ -121,6 +121,7 @@ struct DvmGlobals {
int (*vfprintfHook)(FILE*, const char*, va_list);
void (*exitHook)(int);
void (*abortHook)(void);
+ bool (*isSensitiveThreadHook)(void);
int jniGrefLimit; // 0 means no limit
char* jniTrace;
diff --git a/vm/Jni.c b/vm/Jni.c
index 3f4a4fcfd..44f65cb4c 100644
--- a/vm/Jni.c
+++ b/vm/Jni.c
@@ -4292,6 +4292,8 @@ jint JNI_CreateJavaVM(JavaVM** p_vm, JNIEnv** p_env, void* vm_args)
gDvm.exitHook = (void (*)(int)) args->options[i].extraInfo;
} else if (strcmp(optStr, "abort") == 0) {
gDvm.abortHook = (void (*)(void))args->options[i].extraInfo;
+ } else if (strcmp(optStr, "sensitiveThread") == 0) {
+ gDvm.isSensitiveThreadHook = (_Bool (*)(void))args->options[i].extraInfo;
} else if (strcmp(optStr, "-Xcheck:jni") == 0) {
checkJni = true;
} else if (strncmp(optStr, "-Xjniopts:", 10) == 0) {
diff --git a/vm/Sync.c b/vm/Sync.c
index 0a0e65a50..967a0d01e 100644
--- a/vm/Sync.c
+++ b/vm/Sync.c
@@ -408,9 +408,12 @@ static void logContentionEvent(Thread *self, u4 waitMs, u4 samplePercent,
len = strlen(procName);
cp = logWriteString(cp, procName, len);
- /* Emit the main thread status, 5 bytes. */
- bool isMainThread = (self->systemTid == getpid());
- cp = logWriteInt(cp, isMainThread);
+ /* Emit the sensitive thread ("main thread") status, 5 bytes. */
+ bool isSensitive = false;
+ if (gDvm.isSensitiveThreadHook != NULL) {
+ isSensitive = gDvm.isSensitiveThreadHook();
+ }
+ cp = logWriteInt(cp, isSensitive);
/* Emit self thread name string, <= 37 bytes. */
selfName = dvmGetThreadName(self);
@@ -431,10 +434,10 @@ static void logContentionEvent(Thread *self, u4 waitMs, u4 samplePercent,
/* Emit the lock owner source code file name, <= 37 bytes. */
if (ownerFileName == NULL) {
- ownerFileName = "";
+ ownerFileName = "";
} else if (strcmp(fileName, ownerFileName) == 0) {
- /* Common case, so save on log space. */
- ownerFileName = "-";
+ /* Common case, so save on log space. */
+ ownerFileName = "-";
}
cp = logWriteString(cp, ownerFileName, strlen(ownerFileName));