Setup dex load reporter for system server
System server may load code at runtime from outside its original classpath. In order to ensure this code is optimized (verified) we need to report it to PackageManager which can optimize it during idle-maintenance windows. This CL sets up the reporting infrastructure for system server. Test: atest DexManagerTest Bug: 148774920 Change-Id: Ibd2ee38857b97bde426ee0a01c60543f1acb8671
This commit is contained in:
@@ -136,6 +136,7 @@ import com.android.server.pm.OtaDexoptService;
|
||||
import com.android.server.pm.PackageManagerService;
|
||||
import com.android.server.pm.ShortcutService;
|
||||
import com.android.server.pm.UserManagerService;
|
||||
import com.android.server.pm.dex.SystemServerDexLoadReporter;
|
||||
import com.android.server.policy.PermissionPolicyService;
|
||||
import com.android.server.policy.PhoneWindowManager;
|
||||
import com.android.server.policy.role.LegacyRoleResolutionPolicy;
|
||||
@@ -171,6 +172,7 @@ import com.android.server.wm.ActivityTaskManagerService;
|
||||
import com.android.server.wm.WindowManagerGlobalLock;
|
||||
import com.android.server.wm.WindowManagerService;
|
||||
|
||||
import dalvik.system.BaseDexClassLoader;
|
||||
import dalvik.system.VMRuntime;
|
||||
|
||||
import com.google.android.startop.iorap.IorapForwardingService;
|
||||
@@ -839,6 +841,11 @@ public final class SystemServer {
|
||||
Watchdog.getInstance().resumeWatchingCurrentThread("packagemanagermain");
|
||||
}
|
||||
|
||||
// Now that the package manager has started, register the dex load reporter to capture any
|
||||
// dex files loaded by system server.
|
||||
// These dex files will be optimized by the BackgroundDexOptService.
|
||||
BaseDexClassLoader.setReporter(new SystemServerDexLoadReporter(mPackageManagerService));
|
||||
|
||||
mFirstBoot = mPackageManagerService.isFirstBoot();
|
||||
mPackageManager = mSystemContext.getPackageManager();
|
||||
t.traceEnd();
|
||||
|
||||
Reference in New Issue
Block a user