From 2398442ec0d272bb7d6505593b9041dbcee2e188 Mon Sep 17 00:00:00 2001 From: Jiakai Zhang Date: Thu, 9 Nov 2023 16:47:04 +0000 Subject: [PATCH] Change OnlyPreoptBootImageAndSystemServer to OnlyPreoptArtBootImage. OnlyPreoptBootImageAndSystemServer was for making the eng build faster. This change makes it even faster. Bug: 309011617 Test: Presubmit Change-Id: If9001e99593b57deafa7b56f0ca6b3d4d80f56d3 --- dexpreopt/config.go | 80 +++++++++++++++++++------------------- dexpreopt/dexpreopt.go | 7 +--- java/app.go | 2 +- java/dexpreopt_bootjars.go | 3 +- java/dexpreopt_check.go | 2 +- 5 files changed, 45 insertions(+), 49 deletions(-) diff --git a/dexpreopt/config.go b/dexpreopt/config.go index ba41f4a66..c871e85bf 100644 --- a/dexpreopt/config.go +++ b/dexpreopt/config.go @@ -32,7 +32,7 @@ type GlobalConfig struct { DisablePreoptBootImages bool // disable prepot for boot images DisablePreoptModules []string // modules with preopt disabled by product-specific config - OnlyPreoptBootImageAndSystemServer bool // only preopt jars in the boot image or system server + OnlyPreoptArtBootImage bool // only preopt jars in the ART boot image PreoptWithUpdatableBcp bool // If updatable boot jars are included in dexpreopt or not. @@ -691,45 +691,45 @@ func (s *globalSoongConfigSingleton) MakeVars(ctx android.MakeVarsContext) { func GlobalConfigForTests(ctx android.PathContext) *GlobalConfig { return &GlobalConfig{ - DisablePreopt: false, - DisablePreoptModules: nil, - OnlyPreoptBootImageAndSystemServer: false, - HasSystemOther: false, - PatternsOnSystemOther: nil, - DisableGenerateProfile: false, - ProfileDir: "", - BootJars: android.EmptyConfiguredJarList(), - ApexBootJars: android.EmptyConfiguredJarList(), - ArtApexJars: android.EmptyConfiguredJarList(), - TestOnlyArtBootImageJars: android.EmptyConfiguredJarList(), - SystemServerJars: android.EmptyConfiguredJarList(), - SystemServerApps: nil, - ApexSystemServerJars: android.EmptyConfiguredJarList(), - StandaloneSystemServerJars: android.EmptyConfiguredJarList(), - ApexStandaloneSystemServerJars: android.EmptyConfiguredJarList(), - SpeedApps: nil, - PreoptFlags: nil, - DefaultCompilerFilter: "", - SystemServerCompilerFilter: "", - GenerateDMFiles: false, - NoDebugInfo: false, - DontResolveStartupStrings: false, - AlwaysSystemServerDebugInfo: false, - NeverSystemServerDebugInfo: false, - AlwaysOtherDebugInfo: false, - NeverOtherDebugInfo: false, - IsEng: false, - SanitizeLite: false, - DefaultAppImages: false, - Dex2oatXmx: "", - Dex2oatXms: "", - EmptyDirectory: "empty_dir", - CpuVariant: nil, - InstructionSetFeatures: nil, - BootImageProfiles: nil, - BootFlags: "", - Dex2oatImageXmx: "", - Dex2oatImageXms: "", + DisablePreopt: false, + DisablePreoptModules: nil, + OnlyPreoptArtBootImage: false, + HasSystemOther: false, + PatternsOnSystemOther: nil, + DisableGenerateProfile: false, + ProfileDir: "", + BootJars: android.EmptyConfiguredJarList(), + ApexBootJars: android.EmptyConfiguredJarList(), + ArtApexJars: android.EmptyConfiguredJarList(), + TestOnlyArtBootImageJars: android.EmptyConfiguredJarList(), + SystemServerJars: android.EmptyConfiguredJarList(), + SystemServerApps: nil, + ApexSystemServerJars: android.EmptyConfiguredJarList(), + StandaloneSystemServerJars: android.EmptyConfiguredJarList(), + ApexStandaloneSystemServerJars: android.EmptyConfiguredJarList(), + SpeedApps: nil, + PreoptFlags: nil, + DefaultCompilerFilter: "", + SystemServerCompilerFilter: "", + GenerateDMFiles: false, + NoDebugInfo: false, + DontResolveStartupStrings: false, + AlwaysSystemServerDebugInfo: false, + NeverSystemServerDebugInfo: false, + AlwaysOtherDebugInfo: false, + NeverOtherDebugInfo: false, + IsEng: false, + SanitizeLite: false, + DefaultAppImages: false, + Dex2oatXmx: "", + Dex2oatXms: "", + EmptyDirectory: "empty_dir", + CpuVariant: nil, + InstructionSetFeatures: nil, + BootImageProfiles: nil, + BootFlags: "", + Dex2oatImageXmx: "", + Dex2oatImageXms: "", } } diff --git a/dexpreopt/dexpreopt.go b/dexpreopt/dexpreopt.go index 29ae188cd..c13e14ad2 100644 --- a/dexpreopt/dexpreopt.go +++ b/dexpreopt/dexpreopt.go @@ -124,12 +124,7 @@ func dexpreoptDisabled(ctx android.PathContext, global *GlobalConfig, module *Mo return true } - // If OnlyPreoptBootImageAndSystemServer=true and module is not in boot class path skip - // Also preopt system server jars since selinux prevents system server from loading anything from - // /data. If we don't do this they will need to be extracted which is not favorable for RAM usage - // or performance. If PreoptExtractedApk is true, we ignore the only preopt boot image options. - if global.OnlyPreoptBootImageAndSystemServer && !global.BootJars.ContainsJar(module.Name) && - !global.AllSystemServerJars(ctx).ContainsJar(module.Name) && !module.PreoptExtractedApk { + if global.OnlyPreoptArtBootImage && !module.PreoptExtractedApk { return true } diff --git a/java/app.go b/java/app.go index 7b9e6bb14..2271378a5 100755 --- a/java/app.go +++ b/java/app.go @@ -1584,7 +1584,7 @@ func (u *usesLibrary) verifyUsesLibraries(ctx android.ModuleContext, inputFile a // non-linux build platforms where dexpreopt is generally disabled (the check may fail due to // various unrelated reasons, such as a failure to get manifest from an APK). global := dexpreopt.GetGlobalConfig(ctx) - if global.DisablePreopt || global.OnlyPreoptBootImageAndSystemServer { + if global.DisablePreopt || global.OnlyPreoptArtBootImage { return inputFile } diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go index c0f73afc5..5fb36df6d 100644 --- a/java/dexpreopt_bootjars.go +++ b/java/dexpreopt_bootjars.go @@ -610,7 +610,8 @@ func generateBootImage(ctx android.ModuleContext, imageConfig *bootImageConfig) profile := bootImageProfileRule(ctx, imageConfig) // If dexpreopt of boot image jars should be skipped, stop after generating a profile. - if SkipDexpreoptBootJars(ctx) { + global := dexpreopt.GetGlobalConfig(ctx) + if SkipDexpreoptBootJars(ctx) || (global.OnlyPreoptArtBootImage && imageConfig.name != "art") { return } diff --git a/java/dexpreopt_check.go b/java/dexpreopt_check.go index 7499481de..33be60352 100644 --- a/java/dexpreopt_check.go +++ b/java/dexpreopt_check.go @@ -68,7 +68,7 @@ func (m *dexpreoptSystemserverCheck) GenerateAndroidBuildActions(ctx android.Mod // The check should be skipped on unbundled builds because system server jars are not preopted on // unbundled builds since the artifacts are installed into the system image, not the APEXes. - if global.DisablePreopt || len(targets) == 0 || ctx.Config().UnbundledBuild() { + if global.DisablePreopt || global.OnlyPreoptArtBootImage || len(targets) == 0 || ctx.Config().UnbundledBuild() { return }