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 |
@@ -6150,6 +6152,19 @@ |
} |
+RawCode* Code::FinalizeCodeForFunction(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); |
+ } |
+} |
+ |
+ |
intptr_t Code::GetTokenIndexOfPC(uword pc) const { |
intptr_t token_index = -1; |
const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors()); |