Support for stopping all threads in a Jit environment.
diff --git a/vm/interp/Jit.c b/vm/interp/Jit.c
index e23361b..f2b3c50 100644
--- a/vm/interp/Jit.c
+++ b/vm/interp/Jit.c
@@ -206,28 +206,6 @@
}
}
-/* Returns the signed branch displacement of a Dalvik instruction. */
-int dvmGetBranchDisplacement( DecodedInstruction* decInsn )
-{
- int res = 0;
- switch (dexGetInstrFormat(gDvm.instrFormat, decInsn->opCode)) {
- case kFmt22t:
- res = decInsn->vC;
- break;
- case kFmt20t:
- case kFmt21t:
- res = decInsn->vB;
- break;
- case kFmt10t:
- case kFmt30t:
- res = decInsn->vA;
- break;
- default:
- dvmAbort();
- }
- return res;
-}
-
/*
* Adds to the current trace request one instruction at a time, just
* before that instruction is interpreted. This is the primary trace
@@ -395,6 +373,11 @@
{
int idx = dvmJitHash(dPC);
+ /* If anything is suspended, don't re-enter the code cache */
+ if (gDvm.sumThreadSuspendCount > 0) {
+ return NULL;
+ }
+
/* Expect a high hit rate on 1st shot */
if (gDvmJit.pJitEntryTable[idx].dPC == dPC) {
#if defined(EXIT_STATS)