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

Commit d3402ac9 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Android (Google) Code Review
Browse files

Merge "Add logging to MemoryIntArray"

parents 4d459cb8 6d8f30be
Loading
Loading
Loading
Loading
+44 −7
Original line number Diff line number Diff line
@@ -16,13 +16,19 @@

package android.util;

import static android.os.Process.FIRST_APPLICATION_UID;

import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.Parcelable;
import android.os.Process;

import com.android.internal.annotations.GuardedBy;

import libcore.io.IoUtils;
import dalvik.system.CloseGuard;

import libcore.io.IoUtils;

import java.io.Closeable;
import java.io.IOException;
import java.util.UUID;
@@ -49,13 +55,18 @@ import java.util.UUID;
 */
public final class MemoryIntArray implements Parcelable, Closeable {
    private static final String TAG = "MemoryIntArray";
    private static final boolean DEBUG = Process.myUid() < FIRST_APPLICATION_UID;

    private static final int MAX_SIZE = 1024;

    private final Object mLock = new Object();
    private final CloseGuard mCloseGuard = CloseGuard.get();

    private final boolean mIsOwner;
    private final long mMemoryAddr;

    /** Fd for the shared memory object, -1 when closed */
    @GuardedBy("mLock")
    private int mFd = -1;

    /**
@@ -74,6 +85,7 @@ public final class MemoryIntArray implements Parcelable, Closeable {
        mFd = nativeCreate(name, size);
        mMemoryAddr = nativeOpen(mFd, mIsOwner);
        mCloseGuard.open("close");
        if (DEBUG) Log.i(TAG, "created " + getString());
    }

    private MemoryIntArray(Parcel parcel) throws IOException {
@@ -85,6 +97,8 @@ public final class MemoryIntArray implements Parcelable, Closeable {
        mFd = pfd.detachFd();
        mMemoryAddr = nativeOpen(mFd, mIsOwner);
        mCloseGuard.open("close");

        if (DEBUG) Log.i(TAG, "created from parcel " + getString());
    }

    /**
@@ -141,13 +155,33 @@ public final class MemoryIntArray implements Parcelable, Closeable {
     */
    @Override
    public void close() throws IOException {
        synchronized (mLock) {
            if (!isClosed()) {
                if (DEBUG) {
                    try {
                        throw new Exception();
                    } catch (Exception here) {
                        Log.i(TAG, "closing " + getString(), here);
                    }
                }
                nativeClose(mFd, mMemoryAddr, mIsOwner);
                mFd = -1;
                mCloseGuard.close();
            } else {
                try {
                    throw new Exception();
                } catch (Exception here) {
                    if (DEBUG) Log.i(TAG, getString() + " already closed", here);
                }
            }
        }
    }

    private String getString() {
        return this.getClass().getSimpleName() + "@" + System.identityHashCode(this)
                + " mMemoryAddr=" + mMemoryAddr + " mFd=" + mFd;
    }

    /**
     * @return Whether this array is closed and shouldn't be used.
     */
@@ -162,7 +196,9 @@ public final class MemoryIntArray implements Parcelable, Closeable {
                mCloseGuard.warnIfOpen();
            }

            if (!isClosed()) {
                IoUtils.closeQuietly(this);
            }
        } finally {
            super.finalize();
        }
@@ -206,7 +242,8 @@ public final class MemoryIntArray implements Parcelable, Closeable {

    private void enforceNotClosed() {
        if (isClosed()) {
            throw new IllegalStateException("cannot interact with a closed instance");
            throw new IllegalStateException("cannot interact with a closed instance "
                    + getString());
        }
    }