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

Commit a2849296 authored by Martin Stjernholm's avatar Martin Stjernholm
Browse files

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

Test: adb shell dumpsys package
      adb shell dumpsys package dexopt
      adb shell dumpsys package com.android.egg
      adb shell dumpsys package something.else
  with and without dalvik.vm.useartservice=true
Bug: 251903639
Change-Id: Ib3e4c27e784a5bf4147772ed2056a28f478c16e5
parent f31c78c2
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.
     */