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

Commit ba9dad3d authored by Eric Miao's avatar Eric Miao
Browse files

Revert^2 "Track Bitmap native allocations"

This reverts commit 4858b218.

Reason for revert: fixed the failed test case in b/368409430

In this CL, we used 'com.android.libcore.readonly.Flags.nativeMetrics()'
instead, this flag is forced-read-only which does not involve I/O, thus
preventing failures such as in "Isolated Process" where I/O permission
is disabled. See ag/29673659.

Change-Id: I03ef8dc09d9d668026752b49f196a081d7940626
parent 9eeb5923
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -127,6 +127,22 @@ public final class Bitmap implements Parcelable {
     */
    private static final WeakHashMap<Bitmap, Void> sAllBitmaps = new WeakHashMap<>();

    /**
     * @hide
     */
    private static NativeAllocationRegistry getRegistry(boolean malloc, long size) {
        final long free = nativeGetNativeFinalizer();
        if (com.android.libcore.readonly.Flags.nativeMetrics()) {
            Class cls = Bitmap.class;
            return malloc ? NativeAllocationRegistry.createMalloced(cls, free, size)
                          : NativeAllocationRegistry.createNonmalloced(cls, free, size);
        } else {
            ClassLoader loader = Bitmap.class.getClassLoader();
            return malloc ? NativeAllocationRegistry.createMalloced(loader, free, size)
                          : NativeAllocationRegistry.createNonmalloced(loader, free, size);
        }
    }

    /**
     * Private constructor that must receive an already allocated native bitmap
     * int (pointer).
@@ -151,7 +167,6 @@ public final class Bitmap implements Parcelable {
        mWidth = width;
        mHeight = height;
        mRequestPremultiplied = requestPremultiplied;

        mNinePatchChunk = ninePatchChunk;
        mNinePatchInsets = ninePatchInsets;
        if (density >= 0) {
@@ -159,17 +174,9 @@ public final class Bitmap implements Parcelable {
        }

        mNativePtr = nativeBitmap;

        final int allocationByteCount = getAllocationByteCount();
        NativeAllocationRegistry registry;
        if (fromMalloc) {
            registry = NativeAllocationRegistry.createMalloced(
                    Bitmap.class.getClassLoader(), nativeGetNativeFinalizer(), allocationByteCount);
        } else {
            registry = NativeAllocationRegistry.createNonmalloced(
                    Bitmap.class.getClassLoader(), nativeGetNativeFinalizer(), allocationByteCount);
        }
        registry.registerNativeAllocation(this, nativeBitmap);
        getRegistry(fromMalloc, allocationByteCount).registerNativeAllocation(this, mNativePtr);

        synchronized (Bitmap.class) {
          sAllBitmaps.put(this, null);
        }