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

Commit f00a89ee authored by Jiakai Zhang's avatar Jiakai Zhang Committed by Android (Google) Code Review
Browse files

Merge "Call into ART Service for dexopt dumpsys when it is enabled."

parents e2b82c89 a2849296
Loading
Loading
Loading
Loading
+28 −23
Original line number Diff line number Diff line
@@ -2998,6 +2998,9 @@ public class ComputerEngine implements Computer {
                }
                ipw.println("Dexopt state:");
                ipw.increaseIndent();
                if (DexOptHelper.useArtService()) {
                    DexOptHelper.dumpDexoptState(ipw, packageName);
                } else {
                    Collection<? extends PackageStateInternal> pkgSettings;
                    if (setting != null) {
                        pkgSettings = Collections.singletonList(setting);
@@ -3028,6 +3031,8 @@ public class ComputerEngine implements Computer {
                    ipw.increaseIndent();
                    mBackgroundDexOptService.dump(ipw);
                    ipw.decreaseIndent();
                }
                ipw.decreaseIndent();
                break;
            }

+21 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import android.util.Log;
import android.util.Slog;

import com.android.internal.logging.MetricsLogger;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.LocalManagerRegistry;
import com.android.server.art.ArtManagerLocal;
import com.android.server.art.DexUseManagerLocal;
@@ -843,6 +844,26 @@ public final class DexOptHelper {
        mPm.mPackageDexOptimizer.controlDexOptBlocking(block);
    }

    /**
     * Dumps the dexopt state for the given package, or all packages if it is null.
     */
    public static void dumpDexoptState(
            @NonNull IndentingPrintWriter ipw, @Nullable String packageName) {
        try (PackageManagerLocal.FilteredSnapshot snapshot =
                        getPackageManagerLocal().withFilteredSnapshot()) {
            if (packageName != null) {
                try {
                    DexOptHelper.getArtManagerLocal().dumpPackage(ipw, snapshot, packageName);
                } catch (IllegalArgumentException e) {
                    // Package isn't found, but that should only happen due to race.
                    ipw.println(e);
                }
            } else {
                DexOptHelper.getArtManagerLocal().dump(ipw, snapshot);
            }
        }
    }

    /**
     * Returns the module names of the APEXes that contribute to bootclasspath.
     */