Loading cmds/installd/dexopt.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -429,8 +429,17 @@ class RunDex2Oat : public ExecVHelper { MapPropertyToArg("dalvik.vm.dex2oat-very-large", "--very-large-app-threshold=%s"); // Decide whether to use dex2oat64. bool use_dex2oat64 = false; // Check whether the device even supports 64-bit ABIs. if (!GetProperty("ro.product.cpu.abilist64", "").empty()) { use_dex2oat64 = GetBoolProperty("dalvik.vm.dex2oat64.enabled", false); } const char* dex2oat_bin = select_execution_binary( kDex2oatPath, kDex2oatDebugPath, background_job_compile); (use_dex2oat64 ? kDex2oat64Path : kDex2oat32Path), (use_dex2oat64 ? kDex2oatDebug64Path : kDex2oatDebug32Path), background_job_compile); bool generate_minidebug_info = kEnableMinidebugInfo && GetBoolProperty(kMinidebugInfoSystemProperty, kMinidebugInfoSystemPropertyDefault); Loading cmds/installd/dexopt.h +4 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,10 @@ static constexpr int DEX2OAT_FOR_FILTER = 3; #define ANDROID_ART_APEX_BIN "/apex/com.android.art/bin" // Location of binaries in the Android Runtime APEX. static constexpr const char* kDex2oatPath = ANDROID_ART_APEX_BIN "/dex2oat"; static constexpr const char* kDex2oatDebugPath = ANDROID_ART_APEX_BIN "/dex2oatd"; static constexpr const char* kDex2oat32Path = ANDROID_ART_APEX_BIN "/dex2oat32"; static constexpr const char* kDex2oat64Path = ANDROID_ART_APEX_BIN "/dex2oat64"; static constexpr const char* kDex2oatDebug32Path = ANDROID_ART_APEX_BIN "/dex2oatd32"; static constexpr const char* kDex2oatDebug64Path = ANDROID_ART_APEX_BIN "/dex2oatd64"; static constexpr const char* kProfmanPath = ANDROID_ART_APEX_BIN "/profman"; static constexpr const char* kProfmanDebugPath = ANDROID_ART_APEX_BIN "/profmand"; static constexpr const char* kDexoptanalyzerPath = ANDROID_ART_APEX_BIN "/dexoptanalyzer"; Loading cmds/installd/tests/installd_dexopt_test.cpp +30 −0 Original line number Diff line number Diff line Loading @@ -759,6 +759,36 @@ TEST_F(DexoptTest, ResolveStartupConstStrings) { EXPECT_TRUE(found_enable); } TEST_F(DexoptTest, DexoptDex2oat64Enabled) { LOG(INFO) << "DexoptDex2oat64Enabled"; const std::string property = "dalvik.vm.dex2oat64.enabled"; const std::string previous_value = android::base::GetProperty(property, ""); auto restore_property = android::base::make_scope_guard([=]() { android::base::SetProperty(property, previous_value); }); std::string odex = GetPrimaryDexArtifact(app_oat_dir_.c_str(), apk_path_, "odex"); // Disable the property and use dex2oat32. ASSERT_TRUE(android::base::SetProperty(property, "false")) << property; CompilePrimaryDexOk("speed-profile", DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_PROFILE_GUIDED | DEXOPT_GENERATE_APP_IMAGE, app_oat_dir_.c_str(), kTestAppGid, DEX2OAT_FROM_SCRATCH, /*binder_result=*/nullptr, empty_dm_file_.c_str()); // Enable the property and use dex2oat64. ASSERT_TRUE(android::base::SetProperty(property, "true")) << property; CompilePrimaryDexOk("speed-profile", DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_PROFILE_GUIDED | DEXOPT_GENERATE_APP_IMAGE, app_oat_dir_.c_str(), kTestAppGid, DEX2OAT_FROM_SCRATCH, /*binder_result=*/nullptr, empty_dm_file_.c_str()); } class PrimaryDexReCompilationTest : public DexoptTest { public: virtual void SetUp() { Loading Loading
cmds/installd/dexopt.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -429,8 +429,17 @@ class RunDex2Oat : public ExecVHelper { MapPropertyToArg("dalvik.vm.dex2oat-very-large", "--very-large-app-threshold=%s"); // Decide whether to use dex2oat64. bool use_dex2oat64 = false; // Check whether the device even supports 64-bit ABIs. if (!GetProperty("ro.product.cpu.abilist64", "").empty()) { use_dex2oat64 = GetBoolProperty("dalvik.vm.dex2oat64.enabled", false); } const char* dex2oat_bin = select_execution_binary( kDex2oatPath, kDex2oatDebugPath, background_job_compile); (use_dex2oat64 ? kDex2oat64Path : kDex2oat32Path), (use_dex2oat64 ? kDex2oatDebug64Path : kDex2oatDebug32Path), background_job_compile); bool generate_minidebug_info = kEnableMinidebugInfo && GetBoolProperty(kMinidebugInfoSystemProperty, kMinidebugInfoSystemPropertyDefault); Loading
cmds/installd/dexopt.h +4 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,10 @@ static constexpr int DEX2OAT_FOR_FILTER = 3; #define ANDROID_ART_APEX_BIN "/apex/com.android.art/bin" // Location of binaries in the Android Runtime APEX. static constexpr const char* kDex2oatPath = ANDROID_ART_APEX_BIN "/dex2oat"; static constexpr const char* kDex2oatDebugPath = ANDROID_ART_APEX_BIN "/dex2oatd"; static constexpr const char* kDex2oat32Path = ANDROID_ART_APEX_BIN "/dex2oat32"; static constexpr const char* kDex2oat64Path = ANDROID_ART_APEX_BIN "/dex2oat64"; static constexpr const char* kDex2oatDebug32Path = ANDROID_ART_APEX_BIN "/dex2oatd32"; static constexpr const char* kDex2oatDebug64Path = ANDROID_ART_APEX_BIN "/dex2oatd64"; static constexpr const char* kProfmanPath = ANDROID_ART_APEX_BIN "/profman"; static constexpr const char* kProfmanDebugPath = ANDROID_ART_APEX_BIN "/profmand"; static constexpr const char* kDexoptanalyzerPath = ANDROID_ART_APEX_BIN "/dexoptanalyzer"; Loading
cmds/installd/tests/installd_dexopt_test.cpp +30 −0 Original line number Diff line number Diff line Loading @@ -759,6 +759,36 @@ TEST_F(DexoptTest, ResolveStartupConstStrings) { EXPECT_TRUE(found_enable); } TEST_F(DexoptTest, DexoptDex2oat64Enabled) { LOG(INFO) << "DexoptDex2oat64Enabled"; const std::string property = "dalvik.vm.dex2oat64.enabled"; const std::string previous_value = android::base::GetProperty(property, ""); auto restore_property = android::base::make_scope_guard([=]() { android::base::SetProperty(property, previous_value); }); std::string odex = GetPrimaryDexArtifact(app_oat_dir_.c_str(), apk_path_, "odex"); // Disable the property and use dex2oat32. ASSERT_TRUE(android::base::SetProperty(property, "false")) << property; CompilePrimaryDexOk("speed-profile", DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_PROFILE_GUIDED | DEXOPT_GENERATE_APP_IMAGE, app_oat_dir_.c_str(), kTestAppGid, DEX2OAT_FROM_SCRATCH, /*binder_result=*/nullptr, empty_dm_file_.c_str()); // Enable the property and use dex2oat64. ASSERT_TRUE(android::base::SetProperty(property, "true")) << property; CompilePrimaryDexOk("speed-profile", DEXOPT_IDLE_BACKGROUND_JOB | DEXOPT_PROFILE_GUIDED | DEXOPT_GENERATE_APP_IMAGE, app_oat_dir_.c_str(), kTestAppGid, DEX2OAT_FROM_SCRATCH, /*binder_result=*/nullptr, empty_dm_file_.c_str()); } class PrimaryDexReCompilationTest : public DexoptTest { public: virtual void SetUp() { Loading