From a79efdb69350fa66e1beabed4499ef4d0e809785 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Thu, 18 Jan 2018 16:31:01 -0800 Subject: Fix quickening logic Fix varius bugs in the quickening logic where related to shared code items for different methods. Fixed the case where two methods quicken differently on the same code item by checking that the quicken info is the same for all methods that quicken the same code item. This is accomplished by requickening and reverifying the contents of the quicken info. Fixed the case where the dex to dex compiler would abort from a DCHECK that there was no already quickened instructions. Feature is tested by enabling deduping (aog/594315). Test: test-art-host Bug: 63756964 Change-Id: I52c2b89518f4e808594b450a5fcc373ab5a5863b --- compiler/compiled_method.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'compiler/compiled_method.cc') diff --git a/compiler/compiled_method.cc b/compiler/compiled_method.cc index e41371855d..0f69dbab94 100644 --- a/compiler/compiled_method.cc +++ b/compiler/compiled_method.cc @@ -159,4 +159,10 @@ CompiledMethod::~CompiledMethod() { storage->ReleaseMethodInfo(method_info_); } +void CompiledMethod::ReleaseVMapTable() { + CompiledMethodStorage* storage = GetCompilerDriver()->GetCompiledMethodStorage(); + storage->ReleaseVMapTable(vmap_table_); + vmap_table_ = nullptr; +} + } // namespace art -- cgit v1.2.3-59-g8ed1b