Do not cache the method name from PrettyMethod.
Restores parity with the cache that was present before the external API was
introduced.
Test: mmma art/
Test: mmma system/core/{libunwindstack,libbacktrace} and run host gtests
Bug: 119632407
Change-Id: If15114595513442b16fef47bb277bf43e781a658
diff --git a/libdexfile/external/dex_file_ext.cc b/libdexfile/external/dex_file_ext.cc
index 3c193f4..5c353b5 100644
--- a/libdexfile/external/dex_file_ext.cc
+++ b/libdexfile/external/dex_file_ext.cc
@@ -55,7 +55,6 @@
int32_t offset; // Offset relative to the start of the dex file header.
int32_t len;
int32_t index; // Method index.
- std::string name; // Method name. Not filled in for all cache entries.
};
class MappedFileContainer : public DexFileContainer {
@@ -133,8 +132,7 @@
int32_t offset = reinterpret_cast<const uint8_t*>(code.Insns()) - dex_file_->Begin();
int32_t len = code.InsnsSizeInBytes();
int32_t index = method.GetIndex();
- auto res =
- method_cache_.emplace(offset + len, art::MethodCacheEntry{offset, len, index, ""});
+ auto res = method_cache_.emplace(offset + len, art::MethodCacheEntry{offset, len, index});
if (offset <= dex_offset && dex_offset < offset + len) {
return &res.first->second;
}
@@ -143,13 +141,6 @@
return nullptr;
}
-
- const std::string& GetMethodName(art::MethodCacheEntry& entry) {
- if (entry.name.empty()) {
- entry.name = dex_file_->PrettyMethod(entry.index, false);
- }
- return entry.name;
- }
};
int ExtDexFileOpenFromMemory(const void* addr,
@@ -312,7 +303,8 @@
if (entry != nullptr) {
method_info->offset = entry->offset;
method_info->len = entry->len;
- method_info->name = new ExtDexFileString{ext_dex_file->GetMethodName(*entry)};
+ method_info->name =
+ new ExtDexFileString{ext_dex_file->dex_file_->PrettyMethod(entry->index, false)};
return true;
}