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

Commit e67b8d28 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Reduce PackageManager RAM usage: ArrayMap/Set." into lmp-mr1-dev

parents 670a82cb 9f837a99
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -74,7 +74,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Arrays;
import java.util.Collections;
import java.util.Collections;
import java.util.Comparator;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Iterator;
import java.util.List;
import java.util.List;
import java.util.Set;
import java.util.Set;
@@ -380,7 +379,7 @@ public class PackageParser {
     */
     */
    public static PackageInfo generatePackageInfo(PackageParser.Package p,
    public static PackageInfo generatePackageInfo(PackageParser.Package p,
            int gids[], int flags, long firstInstallTime, long lastUpdateTime,
            int gids[], int flags, long firstInstallTime, long lastUpdateTime,
            HashSet<String> grantedPermissions, PackageUserState state) {
            ArraySet<String> grantedPermissions, PackageUserState state) {


        return generatePackageInfo(p, gids, flags, firstInstallTime, lastUpdateTime,
        return generatePackageInfo(p, gids, flags, firstInstallTime, lastUpdateTime,
                grantedPermissions, state, UserHandle.getCallingUserId());
                grantedPermissions, state, UserHandle.getCallingUserId());
@@ -401,7 +400,7 @@ public class PackageParser {


    public static PackageInfo generatePackageInfo(PackageParser.Package p,
    public static PackageInfo generatePackageInfo(PackageParser.Package p,
            int gids[], int flags, long firstInstallTime, long lastUpdateTime,
            int gids[], int flags, long firstInstallTime, long lastUpdateTime,
            HashSet<String> grantedPermissions, PackageUserState state, int userId) {
            ArraySet<String> grantedPermissions, PackageUserState state, int userId) {


        if (!checkUseInstalledOrHidden(flags, state)) {
        if (!checkUseInstalledOrHidden(flags, state)) {
            return null;
            return null;
+6 −6
Original line number Original line Diff line number Diff line
@@ -18,7 +18,7 @@ package android.content.pm;


import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;


import java.util.HashSet;
import android.util.ArraySet;


/**
/**
 * Per-user state information about a package.
 * Per-user state information about a package.
@@ -34,8 +34,8 @@ public class PackageUserState {


    public String lastDisableAppCaller;
    public String lastDisableAppCaller;


    public HashSet<String> disabledComponents;
    public ArraySet<String> disabledComponents;
    public HashSet<String> enabledComponents;
    public ArraySet<String> enabledComponents;


    public PackageUserState() {
    public PackageUserState() {
        installed = true;
        installed = true;
@@ -51,9 +51,9 @@ public class PackageUserState {
        hidden = o.hidden;
        hidden = o.hidden;
        lastDisableAppCaller = o.lastDisableAppCaller;
        lastDisableAppCaller = o.lastDisableAppCaller;
        disabledComponents = o.disabledComponents != null
        disabledComponents = o.disabledComponents != null
                ? new HashSet<String>(o.disabledComponents) : null;
                ? new ArraySet<String>(o.disabledComponents) : null;
        enabledComponents = o.enabledComponents != null
        enabledComponents = o.enabledComponents != null
                ? new HashSet<String>(o.enabledComponents) : null;
                ? new ArraySet<String>(o.enabledComponents) : null;
        blockUninstall = o.blockUninstall;
        blockUninstall = o.blockUninstall;
    }
    }
}
}
+8 −1
Original line number Original line Diff line number Diff line
@@ -245,13 +245,20 @@ public final class ArraySet<E> implements Collection<E>, Set<E> {
    /**
    /**
     * Create a new ArraySet with the mappings from the given ArraySet.
     * Create a new ArraySet with the mappings from the given ArraySet.
     */
     */
    public ArraySet(ArraySet set) {
    public ArraySet(ArraySet<E> set) {
        this();
        this();
        if (set != null) {
        if (set != null) {
            addAll(set);
            addAll(set);
        }
        }
    }
    }


    /** {@hide} */
    public ArraySet(Collection<E> set) {
        this();
        if (set != null) {
            addAll(set);
        }
    }


    /**
    /**
     * Make the array map empty.  All storage is released.
     * Make the array map empty.  All storage is released.
+2 −2
Original line number Original line Diff line number Diff line
@@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Arrays;
import java.util.Collections;
import java.util.Collections;
import java.util.Comparator;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Iterator;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
@@ -30,6 +29,7 @@ import java.util.Set;
import android.net.Uri;
import android.net.Uri;
import android.util.FastImmutableArraySet;
import android.util.FastImmutableArraySet;
import android.util.ArrayMap;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import android.util.Log;
import android.util.PrintWriterPrinter;
import android.util.PrintWriterPrinter;
import android.util.Slog;
import android.util.Slog;
@@ -736,7 +736,7 @@ public abstract class IntentResolver<F extends IntentFilter, R extends Object> {
    /**
    /**
     * All filters that have been registered.
     * All filters that have been registered.
     */
     */
    private final HashSet<F> mFilters = new HashSet<F>();
    private final ArraySet<F> mFilters = new ArraySet<F>();


    /**
    /**
     * All of the MIME types that have been registered, such as "image/jpeg",
     * All of the MIME types that have been registered, such as "image/jpeg",
+6 −8
Original line number Original line Diff line number Diff line
@@ -32,8 +32,6 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;


import static com.android.internal.util.ArrayUtils.appendInt;
import static com.android.internal.util.ArrayUtils.appendInt;


@@ -50,7 +48,7 @@ public class SystemConfig {


    // These are the built-in uid -> permission mappings that were read from the
    // These are the built-in uid -> permission mappings that were read from the
    // system configuration files.
    // system configuration files.
    final SparseArray<HashSet<String>> mSystemPermissions = new SparseArray<>();
    final SparseArray<ArraySet<String>> mSystemPermissions = new SparseArray<>();


    // These are the built-in shared libraries that were read from the
    // These are the built-in shared libraries that were read from the
    // system configuration files.  Keys are the library names; strings are the
    // system configuration files.  Keys are the library names; strings are the
@@ -59,7 +57,7 @@ public class SystemConfig {


    // These are the features this devices supports that were read from the
    // These are the features this devices supports that were read from the
    // system configuration files.
    // system configuration files.
    final HashMap<String, FeatureInfo> mAvailableFeatures = new HashMap<>();
    final ArrayMap<String, FeatureInfo> mAvailableFeatures = new ArrayMap<>();


    public static final class PermissionEntry {
    public static final class PermissionEntry {
        public final String name;
        public final String name;
@@ -94,7 +92,7 @@ public class SystemConfig {
        return mGlobalGids;
        return mGlobalGids;
    }
    }


    public SparseArray<HashSet<String>> getSystemPermissions() {
    public SparseArray<ArraySet<String>> getSystemPermissions() {
        return mSystemPermissions;
        return mSystemPermissions;
    }
    }


@@ -102,7 +100,7 @@ public class SystemConfig {
        return mSharedLibraries;
        return mSharedLibraries;
    }
    }


    public HashMap<String, FeatureInfo> getAvailableFeatures() {
    public ArrayMap<String, FeatureInfo> getAvailableFeatures() {
        return mAvailableFeatures;
        return mAvailableFeatures;
    }
    }


@@ -252,9 +250,9 @@ public class SystemConfig {
                        continue;
                        continue;
                    }
                    }
                    perm = perm.intern();
                    perm = perm.intern();
                    HashSet<String> perms = mSystemPermissions.get(uid);
                    ArraySet<String> perms = mSystemPermissions.get(uid);
                    if (perms == null) {
                    if (perms == null) {
                        perms = new HashSet<String>();
                        perms = new ArraySet<String>();
                        mSystemPermissions.put(uid, perms);
                        mSystemPermissions.put(uid, perms);
                    }
                    }
                    perms.add(perm);
                    perms.add(perm);
Loading