diff options
Diffstat (limited to 'runtime/vdex_file.cc')
-rw-r--r-- | runtime/vdex_file.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/runtime/vdex_file.cc b/runtime/vdex_file.cc index 842aa04dfb..5e9a2faab0 100644 --- a/runtime/vdex_file.cc +++ b/runtime/vdex_file.cc @@ -171,6 +171,10 @@ void VdexFile::Unquicken(const std::vector<const DexFile*>& dex_files, // least the size of quickening data for each method that has a code item. return; } + // We do not decompile a RETURN_VOID_NO_BARRIER into a RETURN_VOID, as the quickening + // optimization does not depend on the boot image (the optimization relies on not + // having final fields in a class, which does not change for an app). + constexpr bool kDecompileReturnInstruction = false; const uint8_t* quickening_info_ptr = quickening_info.data(); const uint8_t* const quickening_info_end = quickening_info.data() + quickening_info.size(); for (const DexFile* dex_file : dex_files) { @@ -196,7 +200,7 @@ void VdexFile::Unquicken(const std::vector<const DexFile*>& dex_files, quickening_info_ptr += sizeof(uint32_t); optimizer::ArtDecompileDEX(*code_item, ArrayRef<const uint8_t>(quickening_info_ptr, quickening_size), - /* decompile_return_instruction */ false); + kDecompileReturnInstruction); quickening_info_ptr += quickening_size; } it.Next(); @@ -209,7 +213,7 @@ void VdexFile::Unquicken(const std::vector<const DexFile*>& dex_files, quickening_info_ptr += sizeof(uint32_t); optimizer::ArtDecompileDEX(*code_item, ArrayRef<const uint8_t>(quickening_info_ptr, quickening_size), - /* decompile_return_instruction */ false); + kDecompileReturnInstruction); quickening_info_ptr += quickening_size; } it.Next(); |