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

Commit 6fad1d0d authored by Ulya Trafimovich's avatar Ulya Trafimovich
Browse files

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
parent 40f98736
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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) {