summaryrefslogtreecommitdiffstats
path: root/vm/Thread.h
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2009-10-20 13:01:36 -0700
committerBen Cheng <bccheng@google.com>2009-10-20 13:01:36 -0700
commita8e64a7c83ac6fb487a140f77ab8803b46193f45 (patch)
tree3f2bc6b6fca5b0a5c810287b5eaaf58cc2a2104e /vm/Thread.h
parent22620b855a2e79e71939c301d1b7c1e3160e57ee (diff)
downloadandroid_dalvik-a8e64a7c83ac6fb487a140f77ab8803b46193f45.tar.gz
android_dalvik-a8e64a7c83ac6fb487a140f77ab8803b46193f45.tar.bz2
android_dalvik-a8e64a7c83ac6fb487a140f77ab8803b46193f45.zip
Fix an invoke-interface bug that manifests itself with thread state warnings.
r12 is a scratch register and apparently gcc 4.4 starts to actively use it in dvmFindInterfaceMethodInCache, the very function that the original live value is being protected around. This results in useless values setup in the chaining cell and increases the chances to patch the cell (thus the suspend-all requests). Add verbose names for new JIT-related suspend reasons. With all these changes, the thread state warning will still occur but much less frequently. bug 2194174.
Diffstat (limited to 'vm/Thread.h')
-rw-r--r--vm/Thread.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/vm/Thread.h b/vm/Thread.h
index 179a920c2..d834f7b0b 100644
--- a/vm/Thread.h
+++ b/vm/Thread.h
@@ -275,7 +275,8 @@ typedef enum SuspendCause {
SUSPEND_FOR_STACK_DUMP,
SUSPEND_FOR_DEX_OPT,
#if defined(WITH_JIT)
- SUSPEND_FOR_JIT,
+ SUSPEND_FOR_TBL_RESIZE,
+ SUSPEND_FOR_IC_PATCH,
#endif
} SuspendCause;
void dvmSuspendThread(Thread* thread);