From 6fad1d0dbab163f63b09c1d7e15a60bd61c45913 Mon Sep 17 00:00:00 2001 From: Ulya Trafimovich Date: Thu, 30 Jun 2022 13:21:35 +0100 Subject: [PATCH] Dexpreopt: use "speed-profile" if a system server jar has a profile. The motivation is to reduce file size and in-process memory footprint for "services" (which is currently the only system server jar that has a profile). For other system server jars that have no profile keep using "speed", as enabling "speed-profile" for them would completely disable AOT-compiled code. Compare .odex file size: - before: 44360 services.odex - after: 24968 services.odex Bug: b/237399630 Test: lunch aosp_sargo-userdebug && m Change-Id: I844b9607c496d3d6e7048dc6bb8cd958ecbaa441 --- dexpreopt/dexpreopt.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dexpreopt/dexpreopt.go b/dexpreopt/dexpreopt.go index de139c439..d8011d69f 100644 --- a/dexpreopt/dexpreopt.go +++ b/dexpreopt/dexpreopt.go @@ -394,10 +394,14 @@ func dexpreoptCommand(ctx android.PathContext, globalSoong *GlobalSoongConfig, g if !android.PrefixInList(preoptFlags, "--compiler-filter=") { var compilerFilter string if systemServerJars.ContainsJar(module.Name) { - // Jars of system server, use the product option if it is set, speed otherwise. if global.SystemServerCompilerFilter != "" { + // Use the product option if it is set. compilerFilter = global.SystemServerCompilerFilter + } else if profile != nil { + // Use "speed-profile" for system server jars that have a profile. + compilerFilter = "speed-profile" } else { + // Use "speed" for system server jars that do not have a profile. compilerFilter = "speed" } } else if contains(global.SpeedApps, module.Name) || contains(global.SystemServerApps, module.Name) {