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

Commit 3d4d4253 authored by Martijn Coenen's avatar Martijn Coenen Committed by android-build-merger
Browse files

Merge "Don't hold sProxyLock while retrieving interface descriptors." am: ef6fe13c

am: d4d27b40

Change-Id: Ibcdc21838228db0286f3ea4538fd58a03370db35
parents c93fe50d d4d27b40
Loading
Loading
Loading
Loading
+30 −29
Original line number Diff line number Diff line
@@ -241,9 +241,16 @@ public final class BinderProxy implements IBinder {
            }

            Map<String, Integer> counts = new HashMap<>();
            final ArrayList<WeakReference<BinderProxy>> proxiesToQuery =
                    new ArrayList<WeakReference<BinderProxy>>();
            synchronized (sProxyMap) {
                for (ArrayList<WeakReference<BinderProxy>> a : mMainIndexValues) {
                    if (a != null) {
                    for (WeakReference<BinderProxy> weakRef : a) {
                        proxiesToQuery.addAll(a);
                    }
                }
            }
            for (WeakReference<BinderProxy> weakRef : proxiesToQuery) {
                BinderProxy bp = weakRef.get();
                String key;
                if (bp == null) {
@@ -265,8 +272,6 @@ public final class BinderProxy implements IBinder {
                    counts.put(key, i + 1);
                }
            }
                }
            }
            Map.Entry<String, Integer>[] sorted = counts.entrySet().toArray(
                    new Map.Entry[counts.size()]);

@@ -354,10 +359,8 @@ public final class BinderProxy implements IBinder {
     * @hide
     */
    public static InterfaceCount[] getSortedInterfaceCounts(int num) {
        synchronized (sProxyMap) {
        return sProxyMap.getSortedInterfaceCounts(num);
    }
    }

    /**
     * Returns the number of binder proxies held in this process.
@@ -376,12 +379,10 @@ public final class BinderProxy implements IBinder {
     */
    public static void dumpProxyDebugInfo() {
        if (Build.IS_DEBUGGABLE) {
            synchronized (sProxyMap) {
            sProxyMap.dumpProxyInterfaceCounts();
            sProxyMap.dumpPerUidProxyCounts();
        }
    }
    }

    /**
     * Return a BinderProxy for IBinder.