diff options
Diffstat (limited to 'dexlayout/dex_ir.cc')
| -rw-r--r-- | dexlayout/dex_ir.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/dexlayout/dex_ir.cc b/dexlayout/dex_ir.cc index 6bd9da8194..3f715cf37f 100644 --- a/dexlayout/dex_ir.cc +++ b/dexlayout/dex_ir.cc @@ -708,10 +708,12 @@ MethodItem* Collections::GenerateMethodItem(const DexFile& dex_file, ClassDataIt MethodId* method_item = GetMethodId(cdii.GetMemberIndex()); uint32_t access_flags = cdii.GetRawMemberAccessFlags(); const DexFile::CodeItem* disk_code_item = cdii.GetMethodCodeItem(); - CodeItem* code_item = nullptr; + CodeItem* code_item = code_items_.GetExistingObject(cdii.GetMethodCodeItemOffset());; DebugInfoItem* debug_info = nullptr; if (disk_code_item != nullptr) { - code_item = CreateCodeItem(dex_file, *disk_code_item, cdii.GetMethodCodeItemOffset()); + if (code_item == nullptr) { + code_item = CreateCodeItem(dex_file, *disk_code_item, cdii.GetMethodCodeItemOffset()); + } debug_info = code_item->DebugInfo(); } if (debug_info != nullptr) { |