| Index: runtime/vm/object_service.cc
 | 
| diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
 | 
| index bb0bb26d2d2c985f86528399da413ce983b6500c..578d97aa1b13d4b47d4c7eadfccfd13fed78bab3 100644
 | 
| --- a/runtime/vm/object_service.cc
 | 
| +++ b/runtime/vm/object_service.cc
 | 
| @@ -15,11 +15,11 @@ namespace dart {
 | 
|  #ifndef PRODUCT
 | 
|  
 | 
|  static void AddNameProperties(JSONObject* jsobj,
 | 
| -                              const String& name,
 | 
| -                              const String& vm_name) {
 | 
| -  jsobj->AddProperty("name", name.ToCString());
 | 
| -  if (!name.Equals(vm_name)) {
 | 
| -    jsobj->AddProperty("_vmName", vm_name.ToCString());
 | 
| +                              const char* name,
 | 
| +                              const char* vm_name) {
 | 
| +  jsobj->AddProperty("name", name);
 | 
| +  if (strcmp(name, vm_name) != 0) {
 | 
| +    jsobj->AddProperty("_vmName", vm_name);
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -87,7 +87,9 @@ void Class::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    jsobj.AddFixedServiceId("classes/%" Pd "", id());
 | 
|    const String& scrubbed_name = String::Handle(ScrubbedName());
 | 
|    const String& vm_name = String::Handle(Name());
 | 
| -  AddNameProperties(&jsobj, scrubbed_name, vm_name);
 | 
| +  AddNameProperties(&jsobj,
 | 
| +                    scrubbed_name.ToCString(),
 | 
| +                    vm_name.ToCString());
 | 
|    if (ref) {
 | 
|      return;
 | 
|    }
 | 
| @@ -202,7 +204,7 @@ void TypeArguments::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    jsobj.AddServiceId(*this);
 | 
|    const String& user_name = String::Handle(UserVisibleName());
 | 
|    const String& vm_name = String::Handle(Name());
 | 
| -  AddNameProperties(&jsobj, user_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, user_name.ToCString(), vm_name.ToCString());
 | 
|    if (ref) {
 | 
|      return;
 | 
|    }
 | 
| @@ -265,9 +267,9 @@ static void AddFunctionServiceId(const JSONObject& jsobj,
 | 
|    // Regular functions known to their owner use their name (percent-encoded).
 | 
|    String& name = String::Handle(f.name());
 | 
|    if (cls.LookupFunction(name) == f.raw()) {
 | 
| -    name = String::EncodeIRI(name);
 | 
| +    const char* encoded_name = String::EncodeIRI(name);
 | 
|      jsobj.AddFixedServiceId("classes/%" Pd "/functions/%s",
 | 
| -                            cls.id(), name.ToCString());
 | 
| +                            cls.id(), encoded_name);
 | 
|      return;
 | 
|    }
 | 
|    // Oddball functions (not known to their owner) fall back to use the object
 | 
| @@ -288,7 +290,7 @@ void Function::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    AddFunctionServiceId(jsobj, *this, cls);
 | 
|    const String& user_name = String::Handle(UserVisibleName());
 | 
|    const String& vm_name = String::Handle(name());
 | 
| -  AddNameProperties(&jsobj, user_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, user_name.ToCString(), vm_name.ToCString());
 | 
|    const Function& parent = Function::Handle(parent_function());
 | 
|    if (!parent.IsNull()) {
 | 
|      jsobj.AddProperty("owner", parent);
 | 
| @@ -352,14 +354,14 @@ void Field::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    JSONObject jsobj(stream);
 | 
|    Class& cls = Class::Handle(Owner());
 | 
|    String& field_name = String::Handle(name());
 | 
| -  field_name = String::EncodeIRI(field_name);
 | 
| +  const char* encoded_field_name = String::EncodeIRI(field_name);
 | 
|    AddCommonObjectProperties(&jsobj, "Field", ref);
 | 
|    jsobj.AddFixedServiceId("classes/%" Pd "/fields/%s",
 | 
| -                          cls.id(), field_name.ToCString());
 | 
| +                          cls.id(), encoded_field_name);
 | 
|  
 | 
|    const String& user_name = String::Handle(UserVisibleName());
 | 
|    const String& vm_name = String::Handle(name());
 | 
| -  AddNameProperties(&jsobj, user_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, user_name.ToCString(), vm_name.ToCString());
 | 
|    if (cls.IsTopLevel()) {
 | 
|      const Library& library = Library::Handle(cls.library());
 | 
|      jsobj.AddProperty("owner", library);
 | 
| @@ -434,14 +436,13 @@ void Script::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    AddCommonObjectProperties(&jsobj, "Script", ref);
 | 
|    const String& uri = String::Handle(url());
 | 
|    ASSERT(!uri.IsNull());
 | 
| -  const String& encoded_uri = String::Handle(String::EncodeIRI(uri));
 | 
| -  ASSERT(!encoded_uri.IsNull());
 | 
| +  const char* encoded_uri = String::EncodeIRI(uri);
 | 
|    const Library& lib = Library::Handle(FindLibrary());
 | 
|    if (lib.IsNull()) {
 | 
|      jsobj.AddServiceId(*this);
 | 
|    } else {
 | 
|      jsobj.AddFixedServiceId("libraries/%" Pd "/scripts/%s/%" Px64 "",
 | 
| -                            lib.index(), encoded_uri.ToCString(),
 | 
| +                            lib.index(), encoded_uri,
 | 
|                              load_timestamp());
 | 
|    }
 | 
|    jsobj.AddPropertyStr("uri", uri);
 | 
| @@ -499,7 +500,7 @@ void Library::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    jsobj.AddFixedServiceId("libraries/%" Pd "", id);
 | 
|    const String& vm_name = String::Handle(name());
 | 
|    const String& scrubbed_name = String::Handle(String::ScrubName(vm_name));
 | 
| -  AddNameProperties(&jsobj, scrubbed_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, scrubbed_name.ToCString(), vm_name.ToCString());
 | 
|    const String& library_url = String::Handle(url());
 | 
|    jsobj.AddPropertyStr("uri", library_url);
 | 
|    if (ref) {
 | 
| @@ -808,8 +809,8 @@ void Code::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    jsobj.AddFixedServiceId("code/%" Px64"-%" Px "",
 | 
|                            compile_timestamp(),
 | 
|                            PayloadStart());
 | 
| -  const String& qualified_name = String::Handle(QualifiedName());
 | 
| -  const String& vm_name = String::Handle(Name());
 | 
| +  const char* qualified_name = QualifiedName();
 | 
| +  const char* vm_name = Name();
 | 
|    AddNameProperties(&jsobj, qualified_name, vm_name);
 | 
|    const bool is_stub = IsStubCode() || IsAllocationStubCode();
 | 
|    if (is_stub) {
 | 
| @@ -837,8 +838,8 @@ void Code::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|      JSONObject func(&jsobj, "function");
 | 
|      func.AddProperty("type", "@Function");
 | 
|      func.AddProperty("_kind", "Stub");
 | 
| -    ASSERT(qualified_name.Equals(vm_name));
 | 
| -    func.AddProperty("name", vm_name.ToCString());
 | 
| +    ASSERT(strcmp(qualified_name, vm_name) == 0);
 | 
| +    func.AddProperty("name", vm_name);
 | 
|      AddNameProperties(&func, vm_name, vm_name);
 | 
|    }
 | 
|    jsobj.AddPropertyF("_startAddress", "%" Px "", PayloadStart());
 | 
| @@ -1122,7 +1123,7 @@ void Type::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    }
 | 
|    const String& user_name = String::Handle(UserVisibleName());
 | 
|    const String& vm_name = String::Handle(Name());
 | 
| -  AddNameProperties(&jsobj, user_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, user_name.ToCString(), vm_name.ToCString());
 | 
|    if (ref) {
 | 
|      return;
 | 
|    }
 | 
| @@ -1140,7 +1141,7 @@ void TypeRef::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    jsobj.AddServiceId(*this);
 | 
|    const String& user_name = String::Handle(UserVisibleName());
 | 
|    const String& vm_name = String::Handle(Name());
 | 
| -  AddNameProperties(&jsobj, user_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, user_name.ToCString(), vm_name.ToCString());
 | 
|    if (ref) {
 | 
|      return;
 | 
|    }
 | 
| @@ -1155,7 +1156,7 @@ void TypeParameter::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    jsobj.AddServiceId(*this);
 | 
|    const String& user_name = String::Handle(UserVisibleName());
 | 
|    const String& vm_name = String::Handle(Name());
 | 
| -  AddNameProperties(&jsobj, user_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, user_name.ToCString(), vm_name.ToCString());
 | 
|    const Class& param_cls = Class::Handle(parameterized_class());
 | 
|    jsobj.AddProperty("parameterizedClass", param_cls);
 | 
|    if (ref) {
 | 
| @@ -1174,7 +1175,7 @@ void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const {
 | 
|    jsobj.AddServiceId(*this);
 | 
|    const String& user_name = String::Handle(UserVisibleName());
 | 
|    const String& vm_name = String::Handle(Name());
 | 
| -  AddNameProperties(&jsobj, user_name, vm_name);
 | 
| +  AddNameProperties(&jsobj, user_name.ToCString(), vm_name.ToCString());
 | 
|    if (ref) {
 | 
|      return;
 | 
|    }
 | 
| 
 |