odrefresh: Defaults to using "speed" for compiling system_server.
Most device builds use the speed configuration for system_server preopt,
unless "dalvik.vm.systemservercompilerfilter" is set to "speed-profile".
odrefresh should not change this behavior.
Bug: 195653499
Test: adb shell odrefresh --force-compile
(Found "/apex/com.android.art/bin/dex2oat64
--dex-file=/system/framework/services.jar
...
--compiler-filter=speed" in logcat)
Test: adb shell setprop dalvik.vm.systemservercompilerfilter speed-profile && adb shell odrefresh --force-compile
(Found "/apex/com.android.art/bin/dex2oat64
--dex-file=/system/framework/services.jar
...
--profile-file-fd=...
--compiler-filter=speed-profile" in logcat)
Test: atest odsign_e2e_tests
Change-Id: I85feeceef4c1410451765274bd02c634d7d8051f
Merged-In: I85feeceef4c1410451765274bd02c634d7d8051f
(cherry picked from commit b09a983e8dab0477b2546ed56544d31f575c5d2a)
diff --git a/odrefresh/odrefresh.cc b/odrefresh/odrefresh.cc
index cda39ee..e9c0c63 100644
--- a/odrefresh/odrefresh.cc
+++ b/odrefresh/odrefresh.cc
@@ -1139,7 +1139,13 @@
AddDex2OatInstructionSet(&args, isa);
const std::string jar_name(android::base::Basename(jar));
const std::string profile = Concatenate({GetAndroidRoot(), "/framework/", jar_name, ".prof"});
- AddDex2OatProfileAndCompilerFilter(&args, profile);
+ std::string compiler_filter =
+ android::base::GetProperty("dalvik.vm.systemservercompilerfilter", {});
+ if (compiler_filter == "speed-profile") {
+ AddDex2OatProfileAndCompilerFilter(&args, profile);
+ } else {
+ args.emplace_back("--compiler-filter=speed");
+ }
const std::string image_location = GetSystemServerImagePath(/*on_system=*/false, jar);
const std::string install_location = android::base::Dirname(image_location);