Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14d0ab55 authored by Ian Rogers's avatar Ian Rogers Committed by Android Git Automerger
Browse files

am de3c20bc: Merge "Track stack memory in MemoryInfo."

* commit 'de3c20bc':
  Track stack memory in MemoryInfo.
parents 4539955e de3c20bc
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ public final class Debug
        public int otherSharedDirty;

        /** @hide */
        public static final int NUM_OTHER_STATS = 9;
        public static final int NUM_OTHER_STATS = 10;

        private int[] otherStats = new int[NUM_OTHER_STATS*3];

@@ -177,15 +177,16 @@ public final class Debug
        /* @hide */
        public static String getOtherLabel(int which) {
            switch (which) {
                case 0: return "Cursor";
                case 1: return "Ashmem";
                case 2: return "Other dev";
                case 3: return ".so mmap";
                case 4: return ".jar mmap";
                case 5: return ".apk mmap";
                case 6: return ".ttf mmap";
                case 7: return ".dex mmap";
                case 8: return "Other mmap";
                case 0: return "Stack";
                case 1: return "Cursor";
                case 2: return "Ashmem";
                case 3: return "Other dev";
                case 4: return ".so mmap";
                case 5: return ".jar mmap";
                case 6: return ".apk mmap";
                case 7: return ".ttf mmap";
                case 8: return ".dex mmap";
                case 9: return "Other mmap";
                default: return "????";
            }
        }
+28 −14
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ enum {
    HEAP_UNKNOWN,
    HEAP_DALVIK,
    HEAP_NATIVE,
    HEAP_STACK,
    HEAP_CURSOR,
    HEAP_ASHMEM,
    HEAP_UNKNOWN_DEV,
@@ -164,6 +165,8 @@ static void read_mapinfo(FILE *fp, stats_t* stats)
                whichHeap = HEAP_NATIVE;
            } else if (strstr(name, "/dev/ashmem/dalvik-") == name) {
                whichHeap = HEAP_DALVIK;
            } else if (strstr(name, "[stack") == name) {
                whichHeap = HEAP_STACK;
            } else if (strstr(name, "/dev/ashmem/CursorWindow") == name) {
                whichHeap = HEAP_CURSOR;
            } else if (strstr(name, "/dev/ashmem/") == name) {
@@ -510,7 +513,7 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz,
    jobject fileDescriptor)
{
    if (fileDescriptor == NULL) {
        jniThrowNullPointerException(env, NULL);
        jniThrowNullPointerException(env, "fd == null");
        return;
    }
    int origFd = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -547,7 +550,7 @@ static void android_os_Debug_dumpNativeBacktraceToFile(JNIEnv* env, jobject claz
    jint pid, jstring fileName)
{
    if (fileName == NULL) {
        jniThrowNullPointerException(env, NULL);
        jniThrowNullPointerException(env, "file == null");
        return;
    }
    const jchar* str = env->GetStringCritical(fileName, 0);
@@ -611,6 +614,19 @@ int register_android_os_Debug(JNIEnv *env)
{
    jclass clazz = env->FindClass("android/os/Debug$MemoryInfo");

    // Sanity check the number of other statistics expected in Java matches here.
    jfieldID numOtherStats_field = env->GetStaticFieldID(clazz, "NUM_OTHER_STATS", "I");
    jint numOtherStats = env->GetStaticIntField(clazz, numOtherStats_field);
    int expectedNumOtherStats = _NUM_HEAP - _NUM_CORE_HEAP;
    if (numOtherStats != expectedNumOtherStats) {
        jniThrowExceptionFmt(env, "java/lang/RuntimeException",
                             "android.os.Debug.Meminfo.NUM_OTHER_STATS=%d expected %d",
                             numOtherStats, expectedNumOtherStats);
        return JNI_ERR;
    }

    otherStats_field = env->GetFieldID(clazz, "otherStats", "[I");

    for (int i=0; i<_NUM_CORE_HEAP; i++) {
        stat_fields[i].pss_field =
                env->GetFieldID(clazz, stat_field_names[i].pss_name, "I");
@@ -620,8 +636,6 @@ int register_android_os_Debug(JNIEnv *env)
                env->GetFieldID(clazz, stat_field_names[i].sharedDirty_name, "I");
    }

    otherStats_field = env->GetFieldID(clazz, "otherStats", "[I");

    return jniRegisterNativeMethods(env, "android/os/Debug", gMethods, NELEM(gMethods));
}