| Index: runtime/vm/object.cc
|
| ===================================================================
|
| --- runtime/vm/object.cc (revision 7417)
|
| +++ runtime/vm/object.cc (working copy)
|
| @@ -6087,12 +6087,14 @@
|
| assembler->FinalizeInstructions(region);
|
| DebugInfo* pprof_symbol_generator = Dart::pprof_symbol_generator();
|
| if (pprof_symbol_generator != NULL) {
|
| + ASSERT(strlen(name) != 0);
|
| pprof_symbol_generator->AddCode(instrs.EntryPoint(), instrs.size());
|
| pprof_symbol_generator->AddCodeRegion(name,
|
| instrs.EntryPoint(),
|
| instrs.size());
|
| }
|
| if (FLAG_generate_gdb_symbols) {
|
| + ASSERT(strlen(name) != 0);
|
| intptr_t prolog_offset = assembler->prolog_offset();
|
| if (prolog_offset > 0) {
|
| // In order to ensure that gdb sees the first instruction of a function
|
| @@ -6140,8 +6142,15 @@
|
| }
|
|
|
|
|
| -RawCode* Code::FinalizeCode(const char* name, Assembler* assembler) {
|
| - return FinalizeCode(name, assembler, Heap::kDartCode);
|
| +RawCode* Code::FinalizeCode(const Function& function, Assembler* assembler) {
|
| + // Calling ToFullyQualifiedCString is very expensive, try to avoid it.
|
| + if (FLAG_generate_gdb_symbols || (Dart::pprof_symbol_generator() != NULL)) {
|
| + return FinalizeCode(function.ToFullyQualifiedCString(),
|
| + assembler,
|
| + Heap::kDartCode);
|
| + } else {
|
| + return FinalizeCode("", assembler, Heap::kDartCode);
|
| + }
|
| }
|
|
|
|
|
|
|