From 01b70e8bca5e824ee3958ffbdd7727334e81eb0a Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Thu, 17 Nov 2016 10:58:36 +0000 Subject: 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 --- compiler/optimizing/instruction_builder.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing/instruction_builder.cc') 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); } } } -- cgit v1.2.3-59-g8ed1b