Loading services/core/java/com/android/server/pm/DexOptHelper.java +43 −16 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.ActivityManager; import android.app.AppGlobals; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; import android.content.pm.SharedLibraryInfo; Loading Loading @@ -84,8 +85,10 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; Loading Loading @@ -524,7 +527,6 @@ public final class DexOptHelper { return Optional.empty(); } // TODO(b/251903639): Either remove controlDexOptBlocking, or don't ignore it here. OptimizeResult result; try { result = artManager.optimizePackage(snapshot, options.getPackageName(), params); Loading @@ -533,21 +535,6 @@ public final class DexOptHelper { return Optional.empty(); } // TODO(b/251903639): Move this to ArtManagerLocal.addOptimizePackageDoneCallback when // it is implemented. for (OptimizeResult.PackageOptimizeResult pkgRes : result.getPackageOptimizeResults()) { PackageState ps = snapshot.getPackageState(pkgRes.getPackageName()); AndroidPackage ap = ps != null ? ps.getAndroidPackage() : null; if (ap != null) { CompilerStats.PackageStats stats = mPm.getOrCreateCompilerPackageStats(ap); for (OptimizeResult.DexContainerFileOptimizeResult dexRes : pkgRes.getDexContainerFileOptimizeResults()) { stats.setCompileTime( dexRes.getDexContainerFile(), dexRes.getDex2oatWallTimeMillis()); } } } return Optional.of(convertToDexOptResult(result)); } } Loading Loading @@ -967,6 +954,46 @@ public final class DexOptHelper { } } private static class OptimizePackageDoneHandler implements ArtManagerLocal.OptimizePackageDoneCallback { @NonNull private final PackageManagerService mPm; OptimizePackageDoneHandler(@NonNull PackageManagerService pm) { mPm = pm; } /** * Called after every package optimization operation done by {@link ArtManagerLocal}. */ @Override public void onOptimizePackageDone(@NonNull OptimizeResult result) { for (OptimizeResult.PackageOptimizeResult pkgRes : result.getPackageOptimizeResults()) { CompilerStats.PackageStats stats = mPm.getOrCreateCompilerPackageStats(pkgRes.getPackageName()); for (OptimizeResult.DexContainerFileOptimizeResult dexRes : pkgRes.getDexContainerFileOptimizeResults()) { stats.setCompileTime( dexRes.getDexContainerFile(), dexRes.getDex2oatWallTimeMillis()); } } } } /** * Initializes {@link ArtManagerLocal} before {@link getArtManagerLocal} is called. */ public static void initializeArtManagerLocal( @NonNull Context systemContext, @NonNull PackageManagerService pm) { if (!useArtService()) { return; } ArtManagerLocal artManager = new ArtManagerLocal(systemContext); // There doesn't appear to be any checks that @NonNull is heeded, so use requireNonNull // below to ensure we don't store away a null that we'll fail on later. artManager.addOptimizePackageDoneCallback(false /* onlyIncludeUpdates */, Runnable::run, new OptimizePackageDoneHandler(Objects.requireNonNull(pm))); LocalManagerRegistry.addManager(ArtManagerLocal.class, artManager); } /** * Returns {@link ArtManagerLocal} if ART Service should be used for package optimization. */ Loading services/java/com/android/server/SystemServer.java +3 −3 Original line number Diff line number Diff line Loading @@ -108,7 +108,6 @@ import com.android.internal.widget.LockSettingsInternal; import com.android.server.am.ActivityManagerService; import com.android.server.ambientcontext.AmbientContextManagerService; import com.android.server.appbinding.AppBindingService; import com.android.server.art.ArtManagerLocal; import com.android.server.art.ArtModuleServiceInitializer; import com.android.server.art.DexUseManagerLocal; import com.android.server.attention.AttentionManagerService; Loading @@ -132,8 +131,8 @@ import com.android.server.display.DisplayManagerService; import com.android.server.display.color.ColorDisplayService; import com.android.server.dreams.DreamManagerService; import com.android.server.emergency.EmergencyAffordanceService; import com.android.server.grammaticalinflection.GrammaticalInflectionService; import com.android.server.gpu.GpuService; import com.android.server.grammaticalinflection.GrammaticalInflectionService; import com.android.server.graphics.fonts.FontManagerService; import com.android.server.hdmi.HdmiControlService; import com.android.server.incident.IncidentCompanionService; Loading Loading @@ -163,6 +162,7 @@ import com.android.server.pm.ApexSystemServiceInfo; import com.android.server.pm.BackgroundInstallControlService; import com.android.server.pm.CrossProfileAppsService; import com.android.server.pm.DataLoaderManagerService; import com.android.server.pm.DexOptHelper; import com.android.server.pm.DynamicCodeLoggingService; import com.android.server.pm.Installer; import com.android.server.pm.LauncherAppsService; Loading Loading @@ -2770,7 +2770,7 @@ public final class SystemServer implements Dumpable { t.traceEnd(); t.traceBegin("ArtManagerLocal"); LocalManagerRegistry.addManager(ArtManagerLocal.class, new ArtManagerLocal(context)); DexOptHelper.initializeArtManagerLocal(context, mPackageManagerService); t.traceEnd(); if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_UWB)) { Loading Loading
services/core/java/com/android/server/pm/DexOptHelper.java +43 −16 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.app.ActivityManager; import android.app.AppGlobals; import android.content.Context; import android.content.Intent; import android.content.pm.ResolveInfo; import android.content.pm.SharedLibraryInfo; Loading Loading @@ -84,8 +85,10 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; Loading Loading @@ -524,7 +527,6 @@ public final class DexOptHelper { return Optional.empty(); } // TODO(b/251903639): Either remove controlDexOptBlocking, or don't ignore it here. OptimizeResult result; try { result = artManager.optimizePackage(snapshot, options.getPackageName(), params); Loading @@ -533,21 +535,6 @@ public final class DexOptHelper { return Optional.empty(); } // TODO(b/251903639): Move this to ArtManagerLocal.addOptimizePackageDoneCallback when // it is implemented. for (OptimizeResult.PackageOptimizeResult pkgRes : result.getPackageOptimizeResults()) { PackageState ps = snapshot.getPackageState(pkgRes.getPackageName()); AndroidPackage ap = ps != null ? ps.getAndroidPackage() : null; if (ap != null) { CompilerStats.PackageStats stats = mPm.getOrCreateCompilerPackageStats(ap); for (OptimizeResult.DexContainerFileOptimizeResult dexRes : pkgRes.getDexContainerFileOptimizeResults()) { stats.setCompileTime( dexRes.getDexContainerFile(), dexRes.getDex2oatWallTimeMillis()); } } } return Optional.of(convertToDexOptResult(result)); } } Loading Loading @@ -967,6 +954,46 @@ public final class DexOptHelper { } } private static class OptimizePackageDoneHandler implements ArtManagerLocal.OptimizePackageDoneCallback { @NonNull private final PackageManagerService mPm; OptimizePackageDoneHandler(@NonNull PackageManagerService pm) { mPm = pm; } /** * Called after every package optimization operation done by {@link ArtManagerLocal}. */ @Override public void onOptimizePackageDone(@NonNull OptimizeResult result) { for (OptimizeResult.PackageOptimizeResult pkgRes : result.getPackageOptimizeResults()) { CompilerStats.PackageStats stats = mPm.getOrCreateCompilerPackageStats(pkgRes.getPackageName()); for (OptimizeResult.DexContainerFileOptimizeResult dexRes : pkgRes.getDexContainerFileOptimizeResults()) { stats.setCompileTime( dexRes.getDexContainerFile(), dexRes.getDex2oatWallTimeMillis()); } } } } /** * Initializes {@link ArtManagerLocal} before {@link getArtManagerLocal} is called. */ public static void initializeArtManagerLocal( @NonNull Context systemContext, @NonNull PackageManagerService pm) { if (!useArtService()) { return; } ArtManagerLocal artManager = new ArtManagerLocal(systemContext); // There doesn't appear to be any checks that @NonNull is heeded, so use requireNonNull // below to ensure we don't store away a null that we'll fail on later. artManager.addOptimizePackageDoneCallback(false /* onlyIncludeUpdates */, Runnable::run, new OptimizePackageDoneHandler(Objects.requireNonNull(pm))); LocalManagerRegistry.addManager(ArtManagerLocal.class, artManager); } /** * Returns {@link ArtManagerLocal} if ART Service should be used for package optimization. */ Loading
services/java/com/android/server/SystemServer.java +3 −3 Original line number Diff line number Diff line Loading @@ -108,7 +108,6 @@ import com.android.internal.widget.LockSettingsInternal; import com.android.server.am.ActivityManagerService; import com.android.server.ambientcontext.AmbientContextManagerService; import com.android.server.appbinding.AppBindingService; import com.android.server.art.ArtManagerLocal; import com.android.server.art.ArtModuleServiceInitializer; import com.android.server.art.DexUseManagerLocal; import com.android.server.attention.AttentionManagerService; Loading @@ -132,8 +131,8 @@ import com.android.server.display.DisplayManagerService; import com.android.server.display.color.ColorDisplayService; import com.android.server.dreams.DreamManagerService; import com.android.server.emergency.EmergencyAffordanceService; import com.android.server.grammaticalinflection.GrammaticalInflectionService; import com.android.server.gpu.GpuService; import com.android.server.grammaticalinflection.GrammaticalInflectionService; import com.android.server.graphics.fonts.FontManagerService; import com.android.server.hdmi.HdmiControlService; import com.android.server.incident.IncidentCompanionService; Loading Loading @@ -163,6 +162,7 @@ import com.android.server.pm.ApexSystemServiceInfo; import com.android.server.pm.BackgroundInstallControlService; import com.android.server.pm.CrossProfileAppsService; import com.android.server.pm.DataLoaderManagerService; import com.android.server.pm.DexOptHelper; import com.android.server.pm.DynamicCodeLoggingService; import com.android.server.pm.Installer; import com.android.server.pm.LauncherAppsService; Loading Loading @@ -2770,7 +2770,7 @@ public final class SystemServer implements Dumpable { t.traceEnd(); t.traceBegin("ArtManagerLocal"); LocalManagerRegistry.addManager(ArtManagerLocal.class, new ArtManagerLocal(context)); DexOptHelper.initializeArtManagerLocal(context, mPackageManagerService); t.traceEnd(); if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_UWB)) { Loading