X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=vm%2FMisc.cpp;h=057b90d6df0983e5ca5e40fe604c657aa1422d64;hb=45184254bbe33f01e4933a6713c2f2bc6e78f4ce;hp=1299c22ce91d5b305d526be18939bb508a4c56c5;hpb=d8d1b6d7910375a82b8e723ba7d3ee4544db44ac;p=android-x86%2Fdalvik.git diff --git a/vm/Misc.cpp b/vm/Misc.cpp index 1299c22ce..057b90d6d 100644 --- a/vm/Misc.cpp +++ b/vm/Misc.cpp @@ -512,7 +512,12 @@ u8 dvmGetOtherThreadCpuTimeNsec(pthread_t thread) */ bool dvmIterativeSleep(int iteration, int maxTotalSleep, u8 relStartTime) { - const int minSleep = 10000; + /* + * Minimum sleep is one millisecond, it is important to keep this value + * low to ensure short GC pauses since dvmSuspendAllThreads() uses this + * function. + */ + const int minSleep = 1000; u8 curTime; int curDelay; @@ -619,6 +624,7 @@ void *dvmAllocRegion(size_t byteCount, int prot, const char *name) { return NULL; } if (ret == -1) { + munmap(base, byteCount); return NULL; } return base; @@ -694,8 +700,10 @@ bool dvmGetThreadStats(ProcStatData* pData, pid_t tid) char* cp = strchr(lineBuf, ')'); if (cp == NULL) goto parse_fail; - cp++; - for (i = 2; i < 13; i++) { + cp += 2; + pData->state = *cp++; + + for (i = 3; i < 13; i++) { cp = strchr(cp+1, ' '); if (cp == NULL) goto parse_fail;