summaryrefslogtreecommitdiff
path: root/simpleperf/thread_tree.cpp
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2016-08-04 10:22:17 -0700
committerYabin Cui <yabinc@google.com>2016-08-04 12:25:10 -0700
commit190a848fb2d4f502372b2528c55ca1f520e90609 (patch)
tree0f91a18d54c12e089e6454313577de959ff5095c /simpleperf/thread_tree.cpp
parent1f282c61fa7ba844688f370b64b3d547ca85d1ad (diff)
downloadextras-190a848fb2d4f502372b2528c55ca1f520e90609.tar.gz
simpleperf: keep binary in class Record.
It removes memory copy and heap allocation/deallocation in Record::BinaryFormat(), and is a preparation to remove memory copy and heap allocation in Record constructor. Bug: 30649868 Test: run simpleperf_unit_test. Change-Id: Ic8dd80e43f7b547a9beaf896d726b56aeb5d55a2
Diffstat (limited to 'simpleperf/thread_tree.cpp')
-rw-r--r--simpleperf/thread_tree.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/simpleperf/thread_tree.cpp b/simpleperf/thread_tree.cpp
index 3a20ee76..981a5dd2 100644
--- a/simpleperf/thread_tree.cpp
+++ b/simpleperf/thread_tree.cpp
@@ -228,8 +228,7 @@ const Symbol* ThreadTree::FindSymbol(const MapEntry* map, uint64_t ip,
if (symbol == nullptr) {
if (show_ip_for_unknown_symbol_) {
std::string name = android::base::StringPrintf(
- "%s%s[+%" PRIx64 "]",
- (show_mark_for_unknown_symbol_ ? "*" : ""),
+ "%s%s[+%" PRIx64 "]", (show_mark_for_unknown_symbol_ ? "*" : ""),
dso->FileName().c_str(), vaddr_in_file);
dso->InsertSymbol(Symbol(name, vaddr_in_file, 1));
symbol = dso->FindSymbol(vaddr_in_file);
@@ -260,30 +259,30 @@ void ThreadTree::Update(const Record& record) {
if (record.type() == PERF_RECORD_MMAP) {
const MmapRecord& r = *static_cast<const MmapRecord*>(&record);
if (r.InKernel()) {
- AddKernelMap(r.data.addr, r.data.len, r.data.pgoff,
+ AddKernelMap(r.data->addr, r.data->len, r.data->pgoff,
r.sample_id.time_data.time, r.filename);
} else {
- AddThreadMap(r.data.pid, r.data.tid, r.data.addr, r.data.len,
- r.data.pgoff, r.sample_id.time_data.time, r.filename);
+ AddThreadMap(r.data->pid, r.data->tid, r.data->addr, r.data->len,
+ r.data->pgoff, r.sample_id.time_data.time, r.filename);
}
} else if (record.type() == PERF_RECORD_MMAP2) {
const Mmap2Record& r = *static_cast<const Mmap2Record*>(&record);
if (r.InKernel()) {
- AddKernelMap(r.data.addr, r.data.len, r.data.pgoff,
+ AddKernelMap(r.data->addr, r.data->len, r.data->pgoff,
r.sample_id.time_data.time, r.filename);
} else {
std::string filename = (r.filename == DEFAULT_EXECNAME_FOR_THREAD_MMAP)
? "[unknown]"
: r.filename;
- AddThreadMap(r.data.pid, r.data.tid, r.data.addr, r.data.len,
- r.data.pgoff, r.sample_id.time_data.time, filename);
+ AddThreadMap(r.data->pid, r.data->tid, r.data->addr, r.data->len,
+ r.data->pgoff, r.sample_id.time_data.time, filename);
}
} else if (record.type() == PERF_RECORD_COMM) {
const CommRecord& r = *static_cast<const CommRecord*>(&record);
- AddThread(r.data.pid, r.data.tid, r.comm);
+ AddThread(r.data->pid, r.data->tid, r.comm);
} else if (record.type() == PERF_RECORD_FORK) {
const ForkRecord& r = *static_cast<const ForkRecord*>(&record);
- ForkThread(r.data.pid, r.data.tid, r.data.ppid, r.data.ptid);
+ ForkThread(r.data->pid, r.data->tid, r.data->ppid, r.data->ptid);
} else if (record.type() == SIMPLE_PERF_RECORD_KERNEL_SYMBOL) {
const auto& r = *static_cast<const KernelSymbolRecord*>(&record);
Dso::SetKallsyms(std::move(r.kallsyms));