| Index: runtime/vm/disassembler.cc
|
| diff --git a/runtime/vm/disassembler.cc b/runtime/vm/disassembler.cc
|
| index abf9c849878565f65752d0e021618e306fbcfbce..dbd7eaa3cca0d7b945f3f4a5e72f2be53df49645 100644
|
| --- a/runtime/vm/disassembler.cc
|
| +++ b/runtime/vm/disassembler.cc
|
| @@ -105,6 +105,7 @@ void Disassembler::Disassemble(uword start,
|
| uword end,
|
| DisassemblyFormatter* formatter,
|
| const Code& code) {
|
| + NoSafepointScope no_safepoint;
|
| const Code::Comments& comments =
|
| code.IsNull() ? Code::Comments::New(0) : code.comments();
|
| ASSERT(formatter != NULL);
|
| @@ -165,6 +166,13 @@ void Disassembler::Disassemble(uword start,
|
|
|
| void Disassembler::DisassembleCodeHelper(
|
| const char* function_fullname, const Code& code, bool optimized) {
|
| + LocalVarDescriptors& var_descriptors = LocalVarDescriptors::Handle();
|
| + if (FLAG_print_variable_descriptors) {
|
| + // This flag is not on by default, and for debugging purposes only.
|
| + // Since this may allocate, do it outside the NoSafepointScope.
|
| + var_descriptors = code.GetLocalVarDescriptors();
|
| + }
|
| + NoSafepointScope no_safepoint;
|
| THR_Print("Code for %sfunction '%s' {\n",
|
| optimized ? "optimized " : "",
|
| function_fullname);
|
| @@ -232,8 +240,6 @@ void Disassembler::DisassembleCodeHelper(
|
| if (FLAG_print_variable_descriptors) {
|
| THR_Print("Variable Descriptors for function '%s' {\n",
|
| function_fullname);
|
| - const LocalVarDescriptors& var_descriptors =
|
| - LocalVarDescriptors::Handle(code.GetLocalVarDescriptors());
|
| intptr_t var_desc_length =
|
| var_descriptors.IsNull() ? 0 : var_descriptors.Length();
|
| String& var_name = String::Handle();
|
| @@ -283,10 +289,9 @@ void Disassembler::DisassembleCodeHelper(
|
| Class& cls = Class::Handle();
|
| cls ^= code.owner();
|
| if (cls.IsNull()) {
|
| - const String& code_name = String::Handle(code.Name());
|
| THR_Print(" 0x%" Px ": %s, %p\n",
|
| start + offset.Value(),
|
| - code_name.ToCString(),
|
| + code.Name(),
|
| code.raw());
|
| } else {
|
| THR_Print(" 0x%" Px ": allocation stub for %s, %p\n",
|
|
|