summaryrefslogtreecommitdiff
path: root/cmds
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2017-03-09 13:11:25 +0000
committerNicolas Geoffray <ngeoffray@google.com>2017-03-09 13:15:44 +0000
commita2dbefc7a51482acb8d5d139c9e2f01306ef9ceb (patch)
treef4c3a7aab864d9f12e9bbe5e6a73efcdb88097bd /cmds
parent45370128a5749ecc61d5fd3b7850c43b351c03ab (diff)
downloadnative-a2dbefc7a51482acb8d5d139c9e2f01306ef9ceb.tar.gz
Disable input-vdex when doing speed-profile.
input-vdex and dexlayout are incompatible with each other. bug: 36084905 bug: 36076104 bug: 36059948 bug: 35872504 Test: device boots, vdex works on OTA, input-vdex is not passed for speed-profile. Change-Id: I194311041899399db422867670f5e788d6b9ceeb
Diffstat (limited to 'cmds')
-rw-r--r--cmds/installd/dexopt.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/cmds/installd/dexopt.cpp b/cmds/installd/dexopt.cpp
index 0fb207bb44..215600bd52 100644
--- a/cmds/installd/dexopt.cpp
+++ b/cmds/installd/dexopt.cpp
@@ -1105,8 +1105,8 @@ Dex2oatFileWrapper maybe_open_reference_profile(const char* pkgname, bool profil
// Opens the vdex files and assigns the input fd to in_vdex_wrapper_fd and the output fd to
// out_vdex_wrapper_fd. Returns true for success or false in case of errors.
bool open_vdex_files(const char* apk_path, const char* out_oat_path, int dexopt_needed,
- const char* instruction_set, bool is_public, int uid, bool is_secondary_dex,
- Dex2oatFileWrapper* in_vdex_wrapper_fd,
+ const char* instruction_set, bool is_public, bool profile_guided,
+ int uid, bool is_secondary_dex, Dex2oatFileWrapper* in_vdex_wrapper_fd,
Dex2oatFileWrapper* out_vdex_wrapper_fd) {
CHECK(in_vdex_wrapper_fd != nullptr);
CHECK(out_vdex_wrapper_fd != nullptr);
@@ -1116,7 +1116,9 @@ bool open_vdex_files(const char* apk_path, const char* out_oat_path, int dexopt_
int dexopt_action = abs(dexopt_needed);
bool is_odex_location = dexopt_needed < 0;
std::string in_vdex_path_str;
- if (dexopt_action != DEX2OAT_FROM_SCRATCH) {
+ // Disable passing an input vdex when the compilation is profile-guided. The dexlayout
+ // optimization in dex2oat is incompatible with it. b/35872504.
+ if (dexopt_action != DEX2OAT_FROM_SCRATCH && !profile_guided) {
// Open the possibly existing vdex. If none exist, we pass -1 to dex2oat for input-vdex-fd.
const char* path = nullptr;
if (is_odex_location) {
@@ -1135,7 +1137,7 @@ bool open_vdex_files(const char* apk_path, const char* out_oat_path, int dexopt_
return false;
}
if (dexopt_action == DEX2OAT_FOR_BOOT_IMAGE) {
- // When we dex2oat because iof boot image change, we are going to update
+ // When we dex2oat because of boot image change, we are going to update
// in-place the vdex file.
in_vdex_wrapper_fd->reset(open(in_vdex_path_str.c_str(), O_RDWR, 0));
} else {
@@ -1449,8 +1451,8 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins
// Open vdex files.
Dex2oatFileWrapper in_vdex_fd;
Dex2oatFileWrapper out_vdex_fd;
- if (!open_vdex_files(dex_path, out_oat_path, dexopt_needed, instruction_set, is_public, uid,
- is_secondary_dex, &in_vdex_fd, &out_vdex_fd)) {
+ if (!open_vdex_files(dex_path, out_oat_path, dexopt_needed, instruction_set, is_public,
+ profile_guided, uid, is_secondary_dex, &in_vdex_fd, &out_vdex_fd)) {
return -1;
}