From 299488d7c15b5acda668c970c84bd66c3a1018eb Mon Sep 17 00:00:00 2001 From: "Joel Fernandes (Google)" Date: Mon, 20 Aug 2018 23:43:55 -0700 Subject: [PATCH] Rename map names in read_mapinfo ART is removing dependency on ashmem for naming maps. Due to this, the naming of the mappings have changed. Rename them in the debug info so that it is working. Also remove "/dev/ashmem/libc malloc", its now "anon:libc malloc" which is already tested earlier in the code. Bug: 111903542 Change-Id: I5071384f87701af208d6471c66ba425ccbda22ec Signed-off-by: Joel Fernandes (Google) Signed-off-by: Joel Fernandes --- core/jni/android_os_Debug.cpp | 76 +++++++++++++++++------------------ 1 file changed, 36 insertions(+), 40 deletions(-) diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index 638b3ea71d837..8df028a6af65b 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -343,51 +343,47 @@ static void read_mapinfo(FILE *fp, stats_t* stats, bool* foundSwapPss) } is_swappable = true; } else if (strncmp(name, "/dev/", 5) == 0) { + whichHeap = HEAP_UNKNOWN_DEV; if (strncmp(name, "/dev/kgsl-3d0", 13) == 0) { whichHeap = HEAP_GL_DEV; - } else if (strncmp(name, "/dev/ashmem", 11) == 0) { - if (strncmp(name, "/dev/ashmem/dalvik-", 19) == 0) { - whichHeap = HEAP_DALVIK_OTHER; - if (strstr(name, "/dev/ashmem/dalvik-LinearAlloc") == name) { - subHeap = HEAP_DALVIK_OTHER_LINEARALLOC; - } else if ((strstr(name, "/dev/ashmem/dalvik-alloc space") == name) || - (strstr(name, "/dev/ashmem/dalvik-main space") == name)) { - // This is the regular Dalvik heap. - whichHeap = HEAP_DALVIK; - subHeap = HEAP_DALVIK_NORMAL; - } else if (strstr(name, "/dev/ashmem/dalvik-large object space") == name || - strstr(name, "/dev/ashmem/dalvik-free list large object space") - == name) { - whichHeap = HEAP_DALVIK; - subHeap = HEAP_DALVIK_LARGE; - } else if (strstr(name, "/dev/ashmem/dalvik-non moving space") == name) { - whichHeap = HEAP_DALVIK; - subHeap = HEAP_DALVIK_NON_MOVING; - } else if (strstr(name, "/dev/ashmem/dalvik-zygote space") == name) { - whichHeap = HEAP_DALVIK; - subHeap = HEAP_DALVIK_ZYGOTE; - } else if (strstr(name, "/dev/ashmem/dalvik-indirect ref") == name) { - subHeap = HEAP_DALVIK_OTHER_INDIRECT_REFERENCE_TABLE; - } else if (strstr(name, "/dev/ashmem/dalvik-jit-code-cache") == name || - strstr(name, "/dev/ashmem/dalvik-data-code-cache") == name) { - subHeap = HEAP_DALVIK_OTHER_CODE_CACHE; - } else if (strstr(name, "/dev/ashmem/dalvik-CompilerMetadata") == name) { - subHeap = HEAP_DALVIK_OTHER_COMPILER_METADATA; - } else { - subHeap = HEAP_DALVIK_OTHER_ACCOUNTING; // Default to accounting. - } - } else if (strncmp(name, "/dev/ashmem/CursorWindow", 24) == 0) { - whichHeap = HEAP_CURSOR; - } else if (strncmp(name, "/dev/ashmem/libc malloc", 23) == 0) { - whichHeap = HEAP_NATIVE; - } else { - whichHeap = HEAP_ASHMEM; - } - } else { - whichHeap = HEAP_UNKNOWN_DEV; + } else if (strncmp(name, "/dev/ashmem/CursorWindow", 24) == 0) { + whichHeap = HEAP_CURSOR; + } else if (strncmp(name, "/dev/ashmem", 11)) { + whichHeap = HEAP_ASHMEM; } } else if (strncmp(name, "[anon:", 6) == 0) { whichHeap = HEAP_UNKNOWN; + if (strncmp(name, "[anon:dalvik-", 13) == 0) { + whichHeap = HEAP_DALVIK_OTHER; + if (strstr(name, "[anon:dalvik-LinearAlloc") == name) { + subHeap = HEAP_DALVIK_OTHER_LINEARALLOC; + } else if ((strstr(name, "[anon:dalvik-alloc space") == name) || + (strstr(name, "[anon:dalvik-main space") == name)) { + // This is the regular Dalvik heap. + whichHeap = HEAP_DALVIK; + subHeap = HEAP_DALVIK_NORMAL; + } else if (strstr(name, "[anon:dalvik-large object space") == name || + strstr(name, "[anon:dalvik-free list large object space") + == name) { + whichHeap = HEAP_DALVIK; + subHeap = HEAP_DALVIK_LARGE; + } else if (strstr(name, "[anon:dalvik-non moving space") == name) { + whichHeap = HEAP_DALVIK; + subHeap = HEAP_DALVIK_NON_MOVING; + } else if (strstr(name, "[anon:dalvik-zygote space") == name) { + whichHeap = HEAP_DALVIK; + subHeap = HEAP_DALVIK_ZYGOTE; + } else if (strstr(name, "[anon:dalvik-indirect ref") == name) { + subHeap = HEAP_DALVIK_OTHER_INDIRECT_REFERENCE_TABLE; + } else if (strstr(name, "[anon:dalvik-jit-code-cache") == name || + strstr(name, "[anon:dalvik-data-code-cache") == name) { + subHeap = HEAP_DALVIK_OTHER_CODE_CACHE; + } else if (strstr(name, "[anon:dalvik-CompilerMetadata") == name) { + subHeap = HEAP_DALVIK_OTHER_COMPILER_METADATA; + } else { + subHeap = HEAP_DALVIK_OTHER_ACCOUNTING; // Default to accounting. + } + } } else if (nameLen > 0) { whichHeap = HEAP_UNKNOWN_MAP; } else if (start == prevEnd && prevHeap == HEAP_SO) {