simpleperf: fix removing ART frames.
ART frames can also exist before or after JITed Java methods.
Bug: none
Test: run report_html.py manually, and check that ART frames
Test: near JITed Java methods are removed.
Change-Id: I771cb7503bb62e8d0fc71167bfd887abe069554f
diff --git a/simpleperf/dso.cpp b/simpleperf/dso.cpp
index 8e641a8..50a3dc8 100644
--- a/simpleperf/dso.cpp
+++ b/simpleperf/dso.cpp
@@ -317,6 +317,20 @@
unknown_symbols_.insert(std::make_pair(vaddr_in_dso, Symbol(name, vaddr_in_dso, 1)));
}
+bool Dso::IsForJavaMethod() {
+ if (type_ == DSO_DEX_FILE) {
+ return true;
+ }
+ if (type_ == DSO_ELF_FILE) {
+ // JIT symfiles for JITed Java methods are dumped as temporary files, whose name are in format
+ // "TemporaryFile-XXXXXX".
+ size_t pos = path_.rfind('/');
+ pos = (pos == std::string::npos) ? 0 : pos + 1;
+ return strncmp(&path_[pos], "TemporaryFile", strlen("TemporaryFile")) == 0;
+ }
+ return false;
+}
+
void Dso::Load() {
is_loaded_ = true;
std::vector<Symbol> symbols = LoadSymbols();