Don't include map name if the consumer doesn't want names.
Simpleperf doesn't need the name, so avoid the string copies. This seems to speed up simpleperf by around 20%. Test: backtrace_test libunwindstack_test Change-Id: Iba064c7078f7e5ecfc9d8539ba09c14495a52158
This commit is contained in:
parent
6fe59afe53
commit
e62f4c4d4c
2 changed files with 9 additions and 5 deletions
|
@ -61,7 +61,9 @@ void Unwinder::FillInDexFrame() {
|
|||
frame->map_offset = info->offset;
|
||||
frame->map_load_bias = info->load_bias;
|
||||
frame->map_flags = info->flags;
|
||||
frame->map_name = info->name;
|
||||
if (resolve_names_) {
|
||||
frame->map_name = info->name;
|
||||
}
|
||||
frame->rel_pc = dex_pc - info->start;
|
||||
} else {
|
||||
frame->rel_pc = dex_pc;
|
||||
|
@ -96,7 +98,9 @@ void Unwinder::FillInFrame(MapInfo* map_info, Elf* elf, uint64_t rel_pc, uint64_
|
|||
return;
|
||||
}
|
||||
|
||||
frame->map_name = map_info->name;
|
||||
if (resolve_names_) {
|
||||
frame->map_name = map_info->name;
|
||||
}
|
||||
frame->map_offset = map_info->offset;
|
||||
frame->map_start = map_info->start;
|
||||
frame->map_end = map_info->end;
|
||||
|
|
|
@ -221,7 +221,7 @@ TEST_F(UnwinderTest, multiple_frames_dont_resolve_names) {
|
|||
EXPECT_EQ(0x10000U, frame->sp);
|
||||
EXPECT_EQ("", frame->function_name);
|
||||
EXPECT_EQ(0U, frame->function_offset);
|
||||
EXPECT_EQ("/system/fake/libc.so", frame->map_name);
|
||||
EXPECT_EQ("", frame->map_name);
|
||||
EXPECT_EQ(0U, frame->map_offset);
|
||||
EXPECT_EQ(0x1000U, frame->map_start);
|
||||
EXPECT_EQ(0x8000U, frame->map_end);
|
||||
|
@ -235,7 +235,7 @@ TEST_F(UnwinderTest, multiple_frames_dont_resolve_names) {
|
|||
EXPECT_EQ(0x10010U, frame->sp);
|
||||
EXPECT_EQ("", frame->function_name);
|
||||
EXPECT_EQ(0U, frame->function_offset);
|
||||
EXPECT_EQ("/system/fake/libc.so", frame->map_name);
|
||||
EXPECT_EQ("", frame->map_name);
|
||||
EXPECT_EQ(0U, frame->map_offset);
|
||||
EXPECT_EQ(0x1000U, frame->map_start);
|
||||
EXPECT_EQ(0x8000U, frame->map_end);
|
||||
|
@ -249,7 +249,7 @@ TEST_F(UnwinderTest, multiple_frames_dont_resolve_names) {
|
|||
EXPECT_EQ(0x10020U, frame->sp);
|
||||
EXPECT_EQ("", frame->function_name);
|
||||
EXPECT_EQ(0U, frame->function_offset);
|
||||
EXPECT_EQ("/system/fake/libc.so", frame->map_name);
|
||||
EXPECT_EQ("", frame->map_name);
|
||||
EXPECT_EQ(0U, frame->map_offset);
|
||||
EXPECT_EQ(0x1000U, frame->map_start);
|
||||
EXPECT_EQ(0x8000U, frame->map_end);
|
||||
|
|
Loading…
Reference in a new issue