Skip to content

Commit d215693

Browse files
Also attempt to symbolize dart frames in Profiler::DumpStackTrace.
[email protected] Review URL: https://codereview.chromium.org/2199983002 .
1 parent ccaf6c6 commit d215693

File tree

1 file changed

+31
-9
lines changed

1 file changed

+31
-9
lines changed

runtime/vm/profiler.cc

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -334,14 +334,29 @@ static void DumpStackFrame(intptr_t frame_index, uword pc) {
334334
uintptr_t start = 0;
335335
char* native_symbol_name =
336336
NativeSymbolResolver::LookupSymbolName(pc, &start);
337-
if (native_symbol_name == NULL) {
338-
OS::PrintErr("Frame[%" Pd "] = `unknown symbol` [0x%" Px "]\n",
339-
frame_index, pc);
340-
} else {
341-
OS::PrintErr("Frame[%" Pd "] = `%s` [0x%" Px "]\n",
342-
frame_index, native_symbol_name, pc);
337+
if (native_symbol_name != NULL) {
338+
OS::PrintErr(" %" Pp " [native] %s\n", pc, native_symbol_name);
343339
NativeSymbolResolver::FreeSymbolName(native_symbol_name);
340+
return;
341+
}
342+
343+
Code& code = Code::Handle(Code::LookupCodeInVmIsolate(pc));
344+
if (code.IsNull()) {
345+
code = Code::LookupCode(pc); // In current isolate.
346+
}
347+
if (code.IsNull()) {
348+
OS::PrintErr(" %" Pp " [unknown]\n", pc);
349+
return;
350+
}
351+
352+
const Object& owner = Object::Handle(code.owner());
353+
if (owner.IsFunction()) {
354+
OS::PrintErr(" %" Pp " [dart] %s\n", pc,
355+
Function::Cast(owner).ToFullyQualifiedCString());
356+
return;
344357
}
358+
359+
OS::PrintErr(" %" Pp " [stub] %s\n", pc, code.ToCString());
345360
}
346361

347362

@@ -350,10 +365,17 @@ static void DumpStackFrame(intptr_t frame_index,
350365
const Code& code) {
351366
if (code.IsNull()) {
352367
DumpStackFrame(frame_index, pc);
353-
} else {
354-
OS::PrintErr("Frame[%" Pd "] = Dart:`%s` [0x%" Px "]\n",
355-
frame_index, code.ToCString(), pc);
368+
return;
356369
}
370+
371+
const Object& owner = Object::Handle(code.owner());
372+
if (owner.IsFunction()) {
373+
OS::PrintErr(" %" Pp " [dart] %s\n", pc,
374+
Function::Cast(owner).ToFullyQualifiedCString());
375+
return;
376+
}
377+
378+
OS::PrintErr(" %" Pp " [stub] %s\n", pc, code.ToCString());
357379
}
358380

359381

0 commit comments

Comments
 (0)