summaryrefslogtreecommitdiff
path: root/compiler/optimizing/instruction_builder.cc
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2016-11-17 10:58:36 +0000
committerNicolas Geoffray <ngeoffray@google.com>2016-11-18 10:44:15 +0000
commit01b70e8bca5e824ee3958ffbdd7727334e81eb0a (patch)
tree3e23fef88de183fd0c7945a6198a68050640b656 /compiler/optimizing/instruction_builder.cc
parent81cae78d1853893ff9c3ecea4b5100002a538eb7 (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.cc5
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);
}
}
}