diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2016-11-17 10:58:36 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2016-11-18 10:44:15 +0000 |
commit | 01b70e8bca5e824ee3958ffbdd7727334e81eb0a (patch) | |
tree | 3e23fef88de183fd0c7945a6198a68050640b656 /compiler/optimizing/instruction_builder.cc | |
parent | 81cae78d1853893ff9c3ecea4b5100002a538eb7 (diff) |
Add dequickening support.
Both vdex and BCI require full dequickening support. This
change implements dequickening by using the existing encoded
quickening, and adds the checkcast quickening to that encoding.
bug: 30937355
bug: 32369913
Test: dex_to_dex_decompiler_test.cc test-art-host
Change-Id: Ie95f46946d59b28157d6e47dcf4a859be032d1c3
Diffstat (limited to 'compiler/optimizing/instruction_builder.cc')
-rw-r--r-- | compiler/optimizing/instruction_builder.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc index c8c4ca76fd..b44137d138 100644 --- a/compiler/optimizing/instruction_builder.cc +++ b/compiler/optimizing/instruction_builder.cc @@ -1723,7 +1723,10 @@ uint16_t HInstructionBuilder::LookupQuickenedInfo(uint32_t dex_pc) { if (dex_pc_in_map == dex_pc) { return value_in_map; } else { - skipped_interpreter_metadata_.Put(dex_pc_in_map, value_in_map); + // Overwrite and not Put, as quickened CHECK-CAST has two entries with + // the same dex_pc. This is OK, because the compiler does not care about those + // entries. + skipped_interpreter_metadata_.Overwrite(dex_pc_in_map, value_in_map); } } } |