| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "vm/object.h" | 5 #include "vm/object.h" | 
| 6 | 6 | 
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" | 
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" | 
| 9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" | 
| 10 #include "vm/cpu.h" | 10 #include "vm/cpu.h" | 
| (...skipping 1538 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1549 | 1549 | 
| 1550   cls = Class::New<UserTag>(); | 1550   cls = Class::New<UserTag>(); | 
| 1551 } | 1551 } | 
| 1552 | 1552 | 
| 1553 | 1553 | 
| 1554 void Object::Print() const { | 1554 void Object::Print() const { | 
| 1555   OS::Print("%s\n", ToCString()); | 1555   OS::Print("%s\n", ToCString()); | 
| 1556 } | 1556 } | 
| 1557 | 1557 | 
| 1558 | 1558 | 
|  | 1559 static void AddNameProperties(JSONObject* jsobj, | 
|  | 1560                               const String& name, | 
|  | 1561                               const String& vm_name) { | 
|  | 1562   jsobj->AddProperty("name", name.ToCString()); | 
|  | 1563   if (!name.Equals(vm_name)) { | 
|  | 1564     jsobj->AddProperty("_vmName", vm_name.ToCString()); | 
|  | 1565   } | 
|  | 1566 } | 
|  | 1567 | 
|  | 1568 | 
|  | 1569 static void AddTypeProperties(JSONObject* jsobj, | 
|  | 1570                               const char* user_type, | 
|  | 1571                               const char* vm_type, | 
|  | 1572                               bool ref) { | 
|  | 1573   bool same_type = (strcmp(user_type, vm_type) == 0); | 
|  | 1574   if (ref) { | 
|  | 1575     jsobj->AddPropertyF("type", "@%s", user_type); | 
|  | 1576     if (!same_type) { | 
|  | 1577       jsobj->AddPropertyF("_vmType", "@%s", vm_type); | 
|  | 1578     } | 
|  | 1579   } else { | 
|  | 1580     jsobj->AddProperty("type", user_type); | 
|  | 1581     if (!same_type) { | 
|  | 1582       jsobj->AddProperty("_vmType", vm_type); | 
|  | 1583     } | 
|  | 1584   } | 
|  | 1585 } | 
|  | 1586 | 
|  | 1587 | 
| 1559 void Object::PrintJSON(JSONStream* stream, bool ref) const { | 1588 void Object::PrintJSON(JSONStream* stream, bool ref) const { | 
| 1560   if (IsNull()) { | 1589   if (IsNull()) { | 
| 1561     JSONObject jsobj(stream); | 1590     JSONObject jsobj(stream); | 
| 1562     jsobj.AddProperty("type", ref ? "@Null" : "Null"); | 1591     AddTypeProperties(&jsobj, "null", JSONType(), ref); | 
| 1563     jsobj.AddProperty("id", "objects/null"); | 1592     jsobj.AddProperty("id", "objects/null"); | 
| 1564     jsobj.AddProperty("valueAsString", "null"); | 1593     jsobj.AddProperty("valueAsString", "null"); | 
| 1565     if (!ref) { | 1594     if (!ref) { | 
| 1566       const Class& cls = Class::Handle(this->clazz()); | 1595       const Class& cls = Class::Handle(this->clazz()); | 
| 1567       jsobj.AddProperty("class", cls); | 1596       jsobj.AddProperty("class", cls); | 
| 1568       jsobj.AddProperty("size", raw()->Size()); | 1597       jsobj.AddProperty("size", raw()->Size()); | 
| 1569     } | 1598     } | 
| 1570   } else { | 1599   } else { | 
| 1571     PrintJSONImpl(stream, ref); | 1600     PrintJSONImpl(stream, ref); | 
| 1572   } | 1601   } | 
| 1573 } | 1602 } | 
| 1574 | 1603 | 
| 1575 | 1604 | 
|  | 1605 void Object::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
|  | 1606   JSONObject jsobj(stream); | 
|  | 1607   AddTypeProperties(&jsobj, "Object", JSONType(), ref); | 
|  | 1608   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
|  | 1609   const intptr_t id = ring->GetIdForObject(raw()); | 
|  | 1610   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
|  | 1611 } | 
|  | 1612 | 
|  | 1613 | 
| 1576 RawString* Object::DictionaryName() const { | 1614 RawString* Object::DictionaryName() const { | 
| 1577   return String::null(); | 1615   return String::null(); | 
| 1578 } | 1616 } | 
| 1579 | 1617 | 
| 1580 | 1618 | 
| 1581 void Object::InitializeObject(uword address, intptr_t class_id, intptr_t size) { | 1619 void Object::InitializeObject(uword address, intptr_t class_id, intptr_t size) { | 
| 1582   // TODO(iposva): Get a proper halt instruction from the assembler which | 1620   // TODO(iposva): Get a proper halt instruction from the assembler which | 
| 1583   // would be needed here for code objects. | 1621   // would be needed here for code objects. | 
| 1584   uword initial_value = reinterpret_cast<uword>(null_); | 1622   uword initial_value = reinterpret_cast<uword>(null_); | 
| 1585   uword cur = address; | 1623   uword cur = address; | 
| (...skipping 2510 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4096   const Library& lib = Library::Handle(library()); | 4134   const Library& lib = Library::Handle(library()); | 
| 4097   const char* library_name = lib.IsNull() ? "" : lib.ToCString(); | 4135   const char* library_name = lib.IsNull() ? "" : lib.ToCString(); | 
| 4098   const char* class_name = String::Handle(Name()).ToCString(); | 4136   const char* class_name = String::Handle(Name()).ToCString(); | 
| 4099   intptr_t len = OS::SNPrint(NULL, 0, format, library_name, class_name) + 1; | 4137   intptr_t len = OS::SNPrint(NULL, 0, format, library_name, class_name) + 1; | 
| 4100   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 4138   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 4101   OS::SNPrint(chars, len, format, library_name, class_name); | 4139   OS::SNPrint(chars, len, format, library_name, class_name); | 
| 4102   return chars; | 4140   return chars; | 
| 4103 } | 4141 } | 
| 4104 | 4142 | 
| 4105 | 4143 | 
| 4106 static void AddNameProperties(JSONObject* jsobj, |  | 
| 4107                               const String& name, |  | 
| 4108                               const String& vm_name) { |  | 
| 4109   jsobj->AddProperty("name", name.ToCString()); |  | 
| 4110   if (!name.Equals(vm_name)) { |  | 
| 4111     jsobj->AddProperty("vmName", vm_name.ToCString()); |  | 
| 4112   } |  | 
| 4113 } |  | 
| 4114 |  | 
| 4115 |  | 
| 4116 void Class::PrintJSONImpl(JSONStream* stream, bool ref) const { | 4144 void Class::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 4117   JSONObject jsobj(stream); | 4145   JSONObject jsobj(stream); | 
| 4118   if ((raw() == Class::null()) || (id() == kFreeListElement)) { | 4146   if ((raw() == Class::null()) || (id() == kFreeListElement)) { | 
| 4119     jsobj.AddProperty("type", "Null"); | 4147     // TODO(turnidge): This is weird.  See if there is another way to | 
|  | 4148     // handle this. | 
|  | 4149     jsobj.AddProperty("type", "null"); | 
| 4120     return; | 4150     return; | 
| 4121   } | 4151   } | 
| 4122   jsobj.AddProperty("type", JSONType(ref)); | 4152   AddTypeProperties(&jsobj, "Class", JSONType(), ref); | 
| 4123   jsobj.AddPropertyF("id", "classes/%" Pd "", id()); | 4153   jsobj.AddPropertyF("id", "classes/%" Pd "", id()); | 
| 4124   const String& user_name = String::Handle(PrettyName()); | 4154   const String& user_name = String::Handle(PrettyName()); | 
| 4125   const String& vm_name = String::Handle(Name()); | 4155   const String& vm_name = String::Handle(Name()); | 
| 4126   AddNameProperties(&jsobj, user_name, vm_name); | 4156   AddNameProperties(&jsobj, user_name, vm_name); | 
| 4127   if (ref) { | 4157   if (ref) { | 
| 4128     return; | 4158     return; | 
| 4129   } | 4159   } | 
| 4130 | 4160 | 
| 4131   const Error& err = Error::Handle(EnsureIsFinalized(Isolate::Current())); | 4161   const Error& err = Error::Handle(EnsureIsFinalized(Isolate::Current())); | 
| 4132   if (!err.IsNull()) { | 4162   if (!err.IsNull()) { | 
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4450   JSONObject jsobj(stream); | 4480   JSONObject jsobj(stream); | 
| 4451   // The index in the canonical_type_arguments table cannot be used as part of | 4481   // The index in the canonical_type_arguments table cannot be used as part of | 
| 4452   // the object id (as in typearguments/id), because the indices are not | 4482   // the object id (as in typearguments/id), because the indices are not | 
| 4453   // preserved when the table grows and the entries get rehashed. Use the ring. | 4483   // preserved when the table grows and the entries get rehashed. Use the ring. | 
| 4454   Isolate* isolate = Isolate::Current(); | 4484   Isolate* isolate = Isolate::Current(); | 
| 4455   ObjectStore* object_store = isolate->object_store(); | 4485   ObjectStore* object_store = isolate->object_store(); | 
| 4456   const Array& table = Array::Handle(object_store->canonical_type_arguments()); | 4486   const Array& table = Array::Handle(object_store->canonical_type_arguments()); | 
| 4457   ASSERT(table.Length() > 0); | 4487   ASSERT(table.Length() > 0); | 
| 4458   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 4488   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 4459   const intptr_t id = ring->GetIdForObject(raw()); | 4489   const intptr_t id = ring->GetIdForObject(raw()); | 
| 4460   jsobj.AddProperty("type", JSONType(ref)); | 4490   AddTypeProperties(&jsobj, "TypeArguments", JSONType(), ref); | 
| 4461   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 4491   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 4462   const String& user_name = String::Handle(PrettyName()); | 4492   const String& user_name = String::Handle(PrettyName()); | 
| 4463   const String& vm_name = String::Handle(Name()); | 4493   const String& vm_name = String::Handle(Name()); | 
| 4464   AddNameProperties(&jsobj, user_name, vm_name); | 4494   AddNameProperties(&jsobj, user_name, vm_name); | 
| 4465   jsobj.AddProperty("length", Length()); | 4495   jsobj.AddProperty("length", Length()); | 
| 4466   jsobj.AddProperty("numInstantiations", NumInstantiations()); | 4496   jsobj.AddProperty("numInstantiations", NumInstantiations()); | 
| 4467   if (ref) { | 4497   if (ref) { | 
| 4468     return; | 4498     return; | 
| 4469   } | 4499   } | 
| 4470   { | 4500   { | 
| (...skipping 2329 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6800 } | 6830 } | 
| 6801 | 6831 | 
| 6802 | 6832 | 
| 6803 void Function::PrintJSONImpl(JSONStream* stream, bool ref) const { | 6833 void Function::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 6804   Class& cls = Class::Handle(Owner()); | 6834   Class& cls = Class::Handle(Owner()); | 
| 6805   ASSERT(!cls.IsNull()); | 6835   ASSERT(!cls.IsNull()); | 
| 6806   Error& err = Error::Handle(); | 6836   Error& err = Error::Handle(); | 
| 6807   err ^= cls.EnsureIsFinalized(Isolate::Current()); | 6837   err ^= cls.EnsureIsFinalized(Isolate::Current()); | 
| 6808   ASSERT(err.IsNull()); | 6838   ASSERT(err.IsNull()); | 
| 6809   JSONObject jsobj(stream); | 6839   JSONObject jsobj(stream); | 
| 6810   jsobj.AddProperty("type", JSONType(ref)); | 6840   AddTypeProperties(&jsobj, "Function", JSONType(), ref); | 
| 6811   jsobj.AddProperty("id", GetFunctionServiceId(*this, cls)); | 6841   jsobj.AddProperty("id", GetFunctionServiceId(*this, cls)); | 
| 6812   const String& user_name = String::Handle(PrettyName()); | 6842   const String& user_name = String::Handle(PrettyName()); | 
| 6813   const String& vm_name = String::Handle(name()); | 6843   const String& vm_name = String::Handle(name()); | 
| 6814   AddNameProperties(&jsobj, user_name, vm_name); | 6844   AddNameProperties(&jsobj, user_name, vm_name); | 
| 6815   if (cls.IsTopLevel()) { | 6845   if (cls.IsTopLevel()) { | 
| 6816     const Library& library = Library::Handle(cls.library()); | 6846     const Library& library = Library::Handle(cls.library()); | 
| 6817     jsobj.AddProperty("owningLibrary", library); | 6847     jsobj.AddProperty("owningLibrary", library); | 
| 6818   } else { | 6848   } else { | 
| 6819     jsobj.AddProperty("owningClass", cls); | 6849     jsobj.AddProperty("owningClass", cls); | 
| 6820   } | 6850   } | 
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 7146   OS::SNPrint(chars, len, kFormat, cls_name, field_name, kF0, kF1, kF2); | 7176   OS::SNPrint(chars, len, kFormat, cls_name, field_name, kF0, kF1, kF2); | 
| 7147   return chars; | 7177   return chars; | 
| 7148 } | 7178 } | 
| 7149 | 7179 | 
| 7150 void Field::PrintJSONImpl(JSONStream* stream, bool ref) const { | 7180 void Field::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 7151   JSONObject jsobj(stream); | 7181   JSONObject jsobj(stream); | 
| 7152   Class& cls = Class::Handle(owner()); | 7182   Class& cls = Class::Handle(owner()); | 
| 7153   intptr_t id = cls.FindFieldIndex(*this); | 7183   intptr_t id = cls.FindFieldIndex(*this); | 
| 7154   ASSERT(id >= 0); | 7184   ASSERT(id >= 0); | 
| 7155   intptr_t cid = cls.id(); | 7185   intptr_t cid = cls.id(); | 
| 7156   jsobj.AddProperty("type", JSONType(ref)); | 7186   AddTypeProperties(&jsobj, "Field", JSONType(), ref); | 
| 7157   jsobj.AddPropertyF("id", "classes/%" Pd "/fields/%" Pd "", cid, id); | 7187   jsobj.AddPropertyF("id", "classes/%" Pd "/fields/%" Pd "", cid, id); | 
| 7158   const String& user_name = String::Handle(PrettyName()); | 7188   const String& user_name = String::Handle(PrettyName()); | 
| 7159   const String& vm_name = String::Handle(name()); | 7189   const String& vm_name = String::Handle(name()); | 
| 7160   AddNameProperties(&jsobj, user_name, vm_name); | 7190   AddNameProperties(&jsobj, user_name, vm_name); | 
| 7161   if (is_static()) { | 7191   if (is_static()) { | 
| 7162     const Instance& valueObj = Instance::Handle(value()); | 7192     const Instance& valueObj = Instance::Handle(value()); | 
| 7163     jsobj.AddProperty("value", valueObj); | 7193     jsobj.AddProperty("value", valueObj); | 
| 7164   } | 7194   } | 
| 7165 | 7195 | 
| 7166   if (cls.IsTopLevel()) { | 7196   if (cls.IsTopLevel()) { | 
| (...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 7937 } | 7967 } | 
| 7938 | 7968 | 
| 7939 | 7969 | 
| 7940 const char* TokenStream::ToCString() const { | 7970 const char* TokenStream::ToCString() const { | 
| 7941   return "TokenStream"; | 7971   return "TokenStream"; | 
| 7942 } | 7972 } | 
| 7943 | 7973 | 
| 7944 | 7974 | 
| 7945 void TokenStream::PrintJSONImpl(JSONStream* stream, bool ref) const { | 7975 void TokenStream::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 7946   JSONObject jsobj(stream); | 7976   JSONObject jsobj(stream); | 
| 7947   jsobj.AddProperty("type", JSONType(ref)); | 7977   AddTypeProperties(&jsobj, "Object", JSONType(), ref); | 
| 7948   // TODO(johnmccutchan): Generate a stable id. TokenStreams hang off | 7978   // TODO(johnmccutchan): Generate a stable id. TokenStreams hang off | 
| 7949   // a Script object but do not have a back reference to generate a stable id. | 7979   // a Script object but do not have a back reference to generate a stable id. | 
| 7950   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 7980   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 7951   const intptr_t id = ring->GetIdForObject(raw()); | 7981   const intptr_t id = ring->GetIdForObject(raw()); | 
| 7952   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 7982   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 7953   if (ref) { | 7983   if (ref) { | 
| 7954     return; | 7984     return; | 
| 7955   } | 7985   } | 
| 7956   const String& private_key = String::Handle(PrivateKey()); | 7986   const String& private_key = String::Handle(PrivateKey()); | 
| 7957   jsobj.AddProperty("privateKey", private_key); | 7987   jsobj.AddProperty("privateKey", private_key); | 
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 8480       } | 8510       } | 
| 8481     } | 8511     } | 
| 8482   } | 8512   } | 
| 8483   return Library::null(); | 8513   return Library::null(); | 
| 8484 } | 8514 } | 
| 8485 | 8515 | 
| 8486 | 8516 | 
| 8487 // See also Dart_ScriptGetTokenInfo. | 8517 // See also Dart_ScriptGetTokenInfo. | 
| 8488 void Script::PrintJSONImpl(JSONStream* stream, bool ref) const { | 8518 void Script::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 8489   JSONObject jsobj(stream); | 8519   JSONObject jsobj(stream); | 
| 8490   jsobj.AddProperty("type", JSONType(ref)); | 8520   AddTypeProperties(&jsobj, "Script", JSONType(), ref); | 
| 8491   const String& name = String::Handle(url()); | 8521   const String& name = String::Handle(url()); | 
| 8492   ASSERT(!name.IsNull()); | 8522   ASSERT(!name.IsNull()); | 
| 8493   const String& encoded_url = String::Handle(String::EncodeIRI(name)); | 8523   const String& encoded_url = String::Handle(String::EncodeIRI(name)); | 
| 8494   ASSERT(!encoded_url.IsNull()); | 8524   ASSERT(!encoded_url.IsNull()); | 
| 8495   const Library& lib = Library::Handle(FindLibrary()); | 8525   const Library& lib = Library::Handle(FindLibrary()); | 
| 8496   intptr_t lib_index = (lib.IsNull()) ? -1 : lib.index(); | 8526   intptr_t lib_index = (lib.IsNull()) ? -1 : lib.index(); | 
| 8497   jsobj.AddPropertyF("id", "libraries/%" Pd "/scripts/%s", | 8527   jsobj.AddPropertyF("id", "libraries/%" Pd "/scripts/%s", | 
| 8498       lib_index, encoded_url.ToCString()); | 8528       lib_index, encoded_url.ToCString()); | 
| 8499   jsobj.AddProperty("name", name.ToCString()); | 8529   jsobj.AddProperty("name", name.ToCString()); | 
| 8500   jsobj.AddProperty("kind", GetKindAsCString()); | 8530   jsobj.AddProperty("kind", GetKindAsCString()); | 
| (...skipping 1272 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 9773   OS::SNPrint(chars, len, kFormat, name.ToCString()); | 9803   OS::SNPrint(chars, len, kFormat, name.ToCString()); | 
| 9774   return chars; | 9804   return chars; | 
| 9775 } | 9805 } | 
| 9776 | 9806 | 
| 9777 | 9807 | 
| 9778 void Library::PrintJSONImpl(JSONStream* stream, bool ref) const { | 9808 void Library::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 9779   const char* library_name = String::Handle(name()).ToCString(); | 9809   const char* library_name = String::Handle(name()).ToCString(); | 
| 9780   intptr_t id = index(); | 9810   intptr_t id = index(); | 
| 9781   ASSERT(id >= 0); | 9811   ASSERT(id >= 0); | 
| 9782   JSONObject jsobj(stream); | 9812   JSONObject jsobj(stream); | 
| 9783   jsobj.AddProperty("type", JSONType(ref)); | 9813   AddTypeProperties(&jsobj, "Library", JSONType(), ref); | 
| 9784   jsobj.AddPropertyF("id", "libraries/%" Pd "", id); | 9814   jsobj.AddPropertyF("id", "libraries/%" Pd "", id); | 
| 9785   jsobj.AddProperty("name", library_name); | 9815   jsobj.AddProperty("name", library_name); | 
| 9786   const char* library_url = String::Handle(url()).ToCString(); | 9816   const char* library_url = String::Handle(url()).ToCString(); | 
| 9787   jsobj.AddProperty("url", library_url); | 9817   jsobj.AddProperty("url", library_url); | 
| 9788   if (ref) { | 9818   if (ref) { | 
| 9789     return; | 9819     return; | 
| 9790   } | 9820   } | 
| 9791   { | 9821   { | 
| 9792     JSONArray jsarr(&jsobj, "classes"); | 9822     JSONArray jsarr(&jsobj, "classes"); | 
| 9793     ClassDictionaryIterator class_iter(*this); | 9823     ClassDictionaryIterator class_iter(*this); | 
| (...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 10560                          KindAsStr(iter.Kind()), | 10590                          KindAsStr(iter.Kind()), | 
| 10561                          iter.DeoptId(), | 10591                          iter.DeoptId(), | 
| 10562                          iter.TokenPos(), | 10592                          iter.TokenPos(), | 
| 10563                          iter.TryIndex()); | 10593                          iter.TryIndex()); | 
| 10564   } | 10594   } | 
| 10565   return buffer; | 10595   return buffer; | 
| 10566 } | 10596 } | 
| 10567 | 10597 | 
| 10568 | 10598 | 
| 10569 void PcDescriptors::PrintToJSONObject(JSONObject* jsobj, bool ref) const { | 10599 void PcDescriptors::PrintToJSONObject(JSONObject* jsobj, bool ref) const { | 
| 10570   jsobj->AddProperty("type", JSONType(ref)); | 10600   AddTypeProperties(jsobj, "Object", JSONType(), ref); | 
| 10571   // TODO(johnmccutchan): Generate a stable id. PcDescriptors hang off a Code | 10601   // TODO(johnmccutchan): Generate a stable id. PcDescriptors hang off a Code | 
| 10572   // object but do not have a back reference to generate an ID. | 10602   // object but do not have a back reference to generate an ID. | 
| 10573   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 10603   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 10574   const intptr_t id = ring->GetIdForObject(raw()); | 10604   const intptr_t id = ring->GetIdForObject(raw()); | 
| 10575   jsobj->AddPropertyF("id", "objects/%" Pd "", id); | 10605   jsobj->AddPropertyF("id", "objects/%" Pd "", id); | 
| 10576   if (ref) { | 10606   if (ref) { | 
| 10577     return; | 10607     return; | 
| 10578   } | 10608   } | 
| 10579   JSONArray members(jsobj, "members"); | 10609   JSONArray members(jsobj, "members"); | 
| 10580   Iterator iter(*this, RawPcDescriptors::kAnyKind); | 10610   Iterator iter(*this, RawPcDescriptors::kAnyKind); | 
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 10859                               (len - num_chars), | 10889                               (len - num_chars), | 
| 10860                               i, var_name, info); | 10890                               i, var_name, info); | 
| 10861   } | 10891   } | 
| 10862   return buffer; | 10892   return buffer; | 
| 10863 } | 10893 } | 
| 10864 | 10894 | 
| 10865 | 10895 | 
| 10866 void LocalVarDescriptors::PrintJSONImpl(JSONStream* stream, | 10896 void LocalVarDescriptors::PrintJSONImpl(JSONStream* stream, | 
| 10867                                         bool ref) const { | 10897                                         bool ref) const { | 
| 10868   JSONObject jsobj(stream); | 10898   JSONObject jsobj(stream); | 
| 10869   jsobj.AddProperty("type", JSONType(ref)); | 10899   AddTypeProperties(&jsobj, "Object", JSONType(), ref); | 
| 10870   // TODO(johnmccutchan): Generate a stable id. LocalVarDescriptors hang off | 10900   // TODO(johnmccutchan): Generate a stable id. LocalVarDescriptors hang off | 
| 10871   // a Code object but do not have a back reference to generate an ID. | 10901   // a Code object but do not have a back reference to generate an ID. | 
| 10872   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 10902   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 10873   const intptr_t id = ring->GetIdForObject(raw()); | 10903   const intptr_t id = ring->GetIdForObject(raw()); | 
| 10874   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 10904   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 10875   if (ref) { | 10905   if (ref) { | 
| 10876     return; | 10906     return; | 
| 10877   } | 10907   } | 
| 10878   JSONArray members(&jsobj, "members"); | 10908   JSONArray members(&jsobj, "members"); | 
| 10879   String& var_name = String::Handle(); | 10909   String& var_name = String::Handle(); | 
| (...skipping 1445 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 12325   } else { | 12355   } else { | 
| 12326     ASSERT(obj.IsFunction()); | 12356     ASSERT(obj.IsFunction()); | 
| 12327     // Dart function. | 12357     // Dart function. | 
| 12328     return Function::Cast(obj).QualifiedPrettyName(); | 12358     return Function::Cast(obj).QualifiedPrettyName(); | 
| 12329   } | 12359   } | 
| 12330 } | 12360 } | 
| 12331 | 12361 | 
| 12332 | 12362 | 
| 12333 void Code::PrintJSONImpl(JSONStream* stream, bool ref) const { | 12363 void Code::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 12334   JSONObject jsobj(stream); | 12364   JSONObject jsobj(stream); | 
| 12335   jsobj.AddProperty("type", JSONType(ref)); | 12365   AddTypeProperties(&jsobj, "Code", JSONType(), ref); | 
| 12336   jsobj.AddPropertyF("id", "code/%" Px64"-%" Px "", compile_timestamp(), | 12366   jsobj.AddPropertyF("id", "code/%" Px64"-%" Px "", compile_timestamp(), | 
| 12337                      EntryPoint()); | 12367                      EntryPoint()); | 
| 12338   jsobj.AddPropertyF("start", "%" Px "", EntryPoint()); | 12368   jsobj.AddPropertyF("start", "%" Px "", EntryPoint()); | 
| 12339   jsobj.AddPropertyF("end", "%" Px "", EntryPoint() + Size()); | 12369   jsobj.AddPropertyF("end", "%" Px "", EntryPoint() + Size()); | 
| 12340   jsobj.AddProperty("optimized", is_optimized()); | 12370   jsobj.AddProperty("optimized", is_optimized()); | 
| 12341   jsobj.AddProperty("alive", is_alive()); | 12371   jsobj.AddProperty("alive", is_alive()); | 
| 12342   jsobj.AddProperty("kind", "Dart"); | 12372   jsobj.AddProperty("kind", "Dart"); | 
| 12343   const String& user_name = String::Handle(PrettyName()); | 12373   const String& user_name = String::Handle(PrettyName()); | 
| 12344   const String& vm_name = String::Handle(Name()); | 12374   const String& vm_name = String::Handle(Name()); | 
| 12345   AddNameProperties(&jsobj, user_name, vm_name); | 12375   AddNameProperties(&jsobj, user_name, vm_name); | 
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 12488   if (!parent_ctx.IsNull()) { | 12518   if (!parent_ctx.IsNull()) { | 
| 12489     parent_ctx.Dump(indent + 2); | 12519     parent_ctx.Dump(indent + 2); | 
| 12490   } | 12520   } | 
| 12491   IndentN(indent); | 12521   IndentN(indent); | 
| 12492   OS::PrintErr("}\n"); | 12522   OS::PrintErr("}\n"); | 
| 12493 } | 12523 } | 
| 12494 | 12524 | 
| 12495 | 12525 | 
| 12496 void Context::PrintJSONImpl(JSONStream* stream, bool ref) const { | 12526 void Context::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 12497   JSONObject jsobj(stream); | 12527   JSONObject jsobj(stream); | 
| 12498   jsobj.AddProperty("type", JSONType(ref)); | 12528   // TODO(turnidge): Should the user level type for Context be Context | 
|  | 12529   // or Object? | 
|  | 12530   AddTypeProperties(&jsobj, "Context", JSONType(), ref); | 
| 12499   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 12531   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 12500   const intptr_t id = ring->GetIdForObject(raw()); | 12532   const intptr_t id = ring->GetIdForObject(raw()); | 
| 12501   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 12533   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 12502 | 12534 | 
| 12503   jsobj.AddProperty("length", num_variables()); | 12535   jsobj.AddProperty("length", num_variables()); | 
| 12504 | 12536 | 
| 12505   if (ref) { | 12537   if (ref) { | 
| 12506     return; | 12538     return; | 
| 12507   } | 12539   } | 
| 12508 | 12540 | 
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 12888 } | 12920 } | 
| 12889 | 12921 | 
| 12890 | 12922 | 
| 12891 const char* ApiError::ToCString() const { | 12923 const char* ApiError::ToCString() const { | 
| 12892   return "ApiError"; | 12924   return "ApiError"; | 
| 12893 } | 12925 } | 
| 12894 | 12926 | 
| 12895 | 12927 | 
| 12896 void ApiError::PrintJSONImpl(JSONStream* stream, bool ref) const { | 12928 void ApiError::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 12897   JSONObject jsobj(stream); | 12929   JSONObject jsobj(stream); | 
| 12898   jsobj.AddProperty("type", "Error"); | 12930   AddTypeProperties(&jsobj, "Error", JSONType(), ref); | 
| 12899   jsobj.AddProperty("id", ""); | 12931   jsobj.AddProperty("id", ""); | 
| 12900   jsobj.AddProperty("kind", JSONType(false)); |  | 
| 12901   jsobj.AddProperty("message", ToErrorCString()); | 12932   jsobj.AddProperty("message", ToErrorCString()); | 
| 12902 } | 12933 } | 
| 12903 | 12934 | 
| 12904 | 12935 | 
| 12905 RawLanguageError* LanguageError::New() { | 12936 RawLanguageError* LanguageError::New() { | 
| 12906   ASSERT(Object::language_error_class() != Class::null()); | 12937   ASSERT(Object::language_error_class() != Class::null()); | 
| 12907   RawObject* raw = Object::Allocate(LanguageError::kClassId, | 12938   RawObject* raw = Object::Allocate(LanguageError::kClassId, | 
| 12908                                     LanguageError::InstanceSize(), | 12939                                     LanguageError::InstanceSize(), | 
| 12909                                     Heap::kOld); | 12940                                     Heap::kOld); | 
| 12910   return reinterpret_cast<RawLanguageError*>(raw); | 12941   return reinterpret_cast<RawLanguageError*>(raw); | 
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 13027 } | 13058 } | 
| 13028 | 13059 | 
| 13029 | 13060 | 
| 13030 const char* LanguageError::ToCString() const { | 13061 const char* LanguageError::ToCString() const { | 
| 13031   return "LanguageError"; | 13062   return "LanguageError"; | 
| 13032 } | 13063 } | 
| 13033 | 13064 | 
| 13034 | 13065 | 
| 13035 void LanguageError::PrintJSONImpl(JSONStream* stream, bool ref) const { | 13066 void LanguageError::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 13036   JSONObject jsobj(stream); | 13067   JSONObject jsobj(stream); | 
| 13037   jsobj.AddProperty("type", "Error"); | 13068   AddTypeProperties(&jsobj, "Error", JSONType(), ref); | 
| 13038   jsobj.AddProperty("id", ""); | 13069   jsobj.AddProperty("id", ""); | 
| 13039   jsobj.AddProperty("kind", JSONType(false)); |  | 
| 13040   jsobj.AddProperty("message", ToErrorCString()); | 13070   jsobj.AddProperty("message", ToErrorCString()); | 
| 13041 } | 13071 } | 
| 13042 | 13072 | 
| 13043 | 13073 | 
| 13044 RawUnhandledException* UnhandledException::New(const Instance& exception, | 13074 RawUnhandledException* UnhandledException::New(const Instance& exception, | 
| 13045                                                const Instance& stacktrace, | 13075                                                const Instance& stacktrace, | 
| 13046                                                Heap::Space space) { | 13076                                                Heap::Space space) { | 
| 13047   ASSERT(Object::unhandled_exception_class() != Class::null()); | 13077   ASSERT(Object::unhandled_exception_class() != Class::null()); | 
| 13048   UnhandledException& result = UnhandledException::Handle(); | 13078   UnhandledException& result = UnhandledException::Handle(); | 
| 13049   { | 13079   { | 
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 13122 | 13152 | 
| 13123 const char* UnhandledException::ToCString() const { | 13153 const char* UnhandledException::ToCString() const { | 
| 13124   return "UnhandledException"; | 13154   return "UnhandledException"; | 
| 13125 } | 13155 } | 
| 13126 | 13156 | 
| 13127 | 13157 | 
| 13128 | 13158 | 
| 13129 void UnhandledException::PrintJSONImpl(JSONStream* stream, | 13159 void UnhandledException::PrintJSONImpl(JSONStream* stream, | 
| 13130                                        bool ref) const { | 13160                                        bool ref) const { | 
| 13131   JSONObject jsobj(stream); | 13161   JSONObject jsobj(stream); | 
| 13132   jsobj.AddProperty("type", "Error"); | 13162   AddTypeProperties(&jsobj, "Error", JSONType(), ref); | 
| 13133   jsobj.AddProperty("id", ""); | 13163   jsobj.AddProperty("id", ""); | 
| 13134   jsobj.AddProperty("kind", JSONType(false)); |  | 
| 13135   jsobj.AddProperty("message", ToErrorCString()); | 13164   jsobj.AddProperty("message", ToErrorCString()); | 
| 13136 | 13165 | 
| 13137   Instance& instance = Instance::Handle(); | 13166   Instance& instance = Instance::Handle(); | 
| 13138   instance = exception(); | 13167   instance = exception(); | 
| 13139   jsobj.AddProperty("exception", instance); | 13168   jsobj.AddProperty("exception", instance); | 
| 13140   instance = stacktrace(); | 13169   instance = stacktrace(); | 
| 13141   jsobj.AddProperty("stacktrace", instance); | 13170   jsobj.AddProperty("stacktrace", instance); | 
| 13142 } | 13171 } | 
| 13143 | 13172 | 
| 13144 | 13173 | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 13168 } | 13197 } | 
| 13169 | 13198 | 
| 13170 | 13199 | 
| 13171 const char* UnwindError::ToCString() const { | 13200 const char* UnwindError::ToCString() const { | 
| 13172   return "UnwindError"; | 13201   return "UnwindError"; | 
| 13173 } | 13202 } | 
| 13174 | 13203 | 
| 13175 | 13204 | 
| 13176 void UnwindError::PrintJSONImpl(JSONStream* stream, bool ref) const { | 13205 void UnwindError::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 13177   JSONObject jsobj(stream); | 13206   JSONObject jsobj(stream); | 
| 13178   jsobj.AddProperty("type", "Error"); | 13207   AddTypeProperties(&jsobj, "Error", JSONType(), ref); | 
| 13179   jsobj.AddProperty("id", ""); | 13208   jsobj.AddProperty("id", ""); | 
| 13180   jsobj.AddProperty("kind", JSONType(false)); |  | 
| 13181   jsobj.AddProperty("message", ToErrorCString()); | 13209   jsobj.AddProperty("message", ToErrorCString()); | 
| 13182 } | 13210 } | 
| 13183 | 13211 | 
| 13184 | 13212 | 
| 13185 RawObject* Instance::Evaluate(const String& expr, | 13213 RawObject* Instance::Evaluate(const String& expr, | 
| 13186                               const Array& param_names, | 13214                               const Array& param_names, | 
| 13187                               const Array& param_values) const { | 13215                               const Array& param_values) const { | 
| 13188   const Class& cls = Class::Handle(clazz()); | 13216   const Class& cls = Class::Handle(clazz()); | 
| 13189   const Function& eval_func = | 13217   const Function& eval_func = | 
| 13190       Function::Handle(EvaluateHelper(cls, expr, param_names, false)); | 13218       Function::Handle(EvaluateHelper(cls, expr, param_names, false)); | 
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 13613     const String& type_name = String::Handle(type.UserVisibleName()); | 13641     const String& type_name = String::Handle(type.UserVisibleName()); | 
| 13614     // Calculate the size of the string. | 13642     // Calculate the size of the string. | 
| 13615     intptr_t len = OS::SNPrint(NULL, 0, kFormat, type_name.ToCString()) + 1; | 13643     intptr_t len = OS::SNPrint(NULL, 0, kFormat, type_name.ToCString()) + 1; | 
| 13616     char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 13644     char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 13617     OS::SNPrint(chars, len, kFormat, type_name.ToCString()); | 13645     OS::SNPrint(chars, len, kFormat, type_name.ToCString()); | 
| 13618     return chars; | 13646     return chars; | 
| 13619   } | 13647   } | 
| 13620 } | 13648 } | 
| 13621 | 13649 | 
| 13622 | 13650 | 
| 13623 void Instance::PrintSharedInstanceJSON(JSONObject* jsobj, bool ref) const { | 13651 void Instance::PrintSharedInstanceJSON(JSONObject* jsobj, | 
| 13624   jsobj->AddProperty("type", JSONType(ref)); | 13652                                        bool ref) const { | 
| 13625   Class& cls = Class::Handle(this->clazz()); | 13653   Class& cls = Class::Handle(this->clazz()); | 
| 13626   jsobj->AddProperty("class", cls); | 13654   jsobj->AddProperty("class", cls); | 
| 13627   // TODO(turnidge): Provide the type arguments here too. | 13655   // TODO(turnidge): Provide the type arguments here too. | 
| 13628   if (ref) { | 13656   if (ref) { | 
| 13629     return; | 13657     return; | 
| 13630   } | 13658   } | 
| 13631 | 13659 | 
| 13632   if (raw()->IsHeapObject()) { | 13660   if (raw()->IsHeapObject()) { | 
| 13633     jsobj->AddProperty("size", raw()->Size()); | 13661     jsobj->AddProperty("size", raw()->Size()); | 
| 13634   } | 13662   } | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 13660     for (intptr_t i = 0; i < NumNativeFields(); i++) { | 13688     for (intptr_t i = 0; i < NumNativeFields(); i++) { | 
| 13661       intptr_t value = GetNativeField(i); | 13689       intptr_t value = GetNativeField(i); | 
| 13662       JSONObject jsfield(&jsarr); | 13690       JSONObject jsfield(&jsarr); | 
| 13663       jsfield.AddProperty("index", i); | 13691       jsfield.AddProperty("index", i); | 
| 13664       jsfield.AddProperty("value", value); | 13692       jsfield.AddProperty("value", value); | 
| 13665     } | 13693     } | 
| 13666   } | 13694   } | 
| 13667 } | 13695 } | 
| 13668 | 13696 | 
| 13669 | 13697 | 
| 13670 void Object::PrintJSONImpl(JSONStream* stream, bool ref) const { |  | 
| 13671   JSONObject jsobj(stream); |  | 
| 13672   jsobj.AddProperty("type", JSONType(ref)); |  | 
| 13673   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); |  | 
| 13674   const intptr_t id = ring->GetIdForObject(raw()); |  | 
| 13675   jsobj.AddPropertyF("id", "objects/%" Pd "", id); |  | 
| 13676 } |  | 
| 13677 |  | 
| 13678 |  | 
| 13679 void Instance::PrintJSONImpl(JSONStream* stream, bool ref) const { | 13698 void Instance::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 13680   JSONObject jsobj(stream); | 13699   JSONObject jsobj(stream); | 
| 13681 | 13700 | 
| 13682   // Handle certain special instance values. | 13701   // Handle certain special instance values. | 
| 13683   if (raw() == Object::sentinel().raw()) { | 13702   if (raw() == Object::sentinel().raw()) { | 
| 13684     jsobj.AddProperty("type", "Sentinel"); | 13703     jsobj.AddProperty("type", "Sentinel"); | 
| 13685     jsobj.AddProperty("id", "objects/not-initialized"); | 13704     jsobj.AddProperty("id", "objects/not-initialized"); | 
| 13686     jsobj.AddProperty("valueAsString", "<not initialized>"); | 13705     jsobj.AddProperty("valueAsString", "<not initialized>"); | 
| 13687     return; | 13706     return; | 
| 13688   } else if (raw() == Object::transition_sentinel().raw()) { | 13707   } else if (raw() == Object::transition_sentinel().raw()) { | 
| 13689     jsobj.AddProperty("type", "Sentinel"); | 13708     jsobj.AddProperty("type", "Sentinel"); | 
| 13690     jsobj.AddProperty("id", "objects/being-initialized"); | 13709     jsobj.AddProperty("id", "objects/being-initialized"); | 
| 13691     jsobj.AddProperty("valueAsString", "<being initialized>"); | 13710     jsobj.AddProperty("valueAsString", "<being initialized>"); | 
| 13692     return; | 13711     return; | 
| 13693   } | 13712   } | 
| 13694 | 13713 | 
|  | 13714   AddTypeProperties(&jsobj, "Instance", JSONType(), ref); | 
| 13695   PrintSharedInstanceJSON(&jsobj, ref); | 13715   PrintSharedInstanceJSON(&jsobj, ref); | 
| 13696   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 13716   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 13697   const intptr_t id = ring->GetIdForObject(raw()); | 13717   const intptr_t id = ring->GetIdForObject(raw()); | 
| 13698   if (IsClosure()) { | 13718   if (IsClosure()) { | 
| 13699     const Function& closureFunc = Function::Handle(Closure::function(*this)); | 13719     const Function& closureFunc = Function::Handle(Closure::function(*this)); | 
| 13700     jsobj.AddProperty("closureFunc", closureFunc); | 13720     jsobj.AddProperty("closureFunc", closureFunc); | 
| 13701     const Context& closureCtxt = Context::Handle(Closure::context(*this)); | 13721     const Context& closureCtxt = Context::Handle(Closure::context(*this)); | 
| 13702     jsobj.AddProperty("closureCtxt", closureCtxt); | 13722     jsobj.AddProperty("closureCtxt", closureCtxt); | 
| 13703   } | 13723   } | 
| 13704   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 13724   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| (...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 14752       return chars; | 14772       return chars; | 
| 14753     } | 14773     } | 
| 14754   } else { | 14774   } else { | 
| 14755     return "Unresolved Type"; | 14775     return "Unresolved Type"; | 
| 14756   } | 14776   } | 
| 14757 } | 14777 } | 
| 14758 | 14778 | 
| 14759 | 14779 | 
| 14760 void Type::PrintJSONImpl(JSONStream* stream, bool ref) const { | 14780 void Type::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 14761   JSONObject jsobj(stream); | 14781   JSONObject jsobj(stream); | 
|  | 14782   AddTypeProperties(&jsobj, "Type", JSONType(), ref); | 
| 14762   PrintSharedInstanceJSON(&jsobj, ref); | 14783   PrintSharedInstanceJSON(&jsobj, ref); | 
| 14763   if (IsCanonical()) { | 14784   if (IsCanonical()) { | 
| 14764     const Class& type_cls = Class::Handle(type_class()); | 14785     const Class& type_cls = Class::Handle(type_class()); | 
| 14765     intptr_t id = type_cls.FindCanonicalTypeIndex(*this); | 14786     intptr_t id = type_cls.FindCanonicalTypeIndex(*this); | 
| 14766     ASSERT(id >= 0); | 14787     ASSERT(id >= 0); | 
| 14767     intptr_t cid = type_cls.id(); | 14788     intptr_t cid = type_cls.id(); | 
| 14768     jsobj.AddPropertyF("id", "classes/%" Pd "/types/%" Pd "", cid, id); | 14789     jsobj.AddPropertyF("id", "classes/%" Pd "/types/%" Pd "", cid, id); | 
| 14769     jsobj.AddProperty("typeClass", type_cls); | 14790     jsobj.AddProperty("typeClass", type_cls); | 
| 14770   } else { | 14791   } else { | 
| 14771     ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 14792     ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 14924     const intptr_t len = OS::SNPrint(NULL, 0, format, type_cstr) + 1; | 14945     const intptr_t len = OS::SNPrint(NULL, 0, format, type_cstr) + 1; | 
| 14925     char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 14946     char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 14926     OS::SNPrint(chars, len, format, type_cstr); | 14947     OS::SNPrint(chars, len, format, type_cstr); | 
| 14927     return chars; | 14948     return chars; | 
| 14928   } | 14949   } | 
| 14929 } | 14950 } | 
| 14930 | 14951 | 
| 14931 | 14952 | 
| 14932 void TypeRef::PrintJSONImpl(JSONStream* stream, bool ref) const { | 14953 void TypeRef::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 14933   JSONObject jsobj(stream); | 14954   JSONObject jsobj(stream); | 
|  | 14955   AddTypeProperties(&jsobj, "TypeRef", JSONType(), ref); | 
| 14934   PrintSharedInstanceJSON(&jsobj, ref); | 14956   PrintSharedInstanceJSON(&jsobj, ref); | 
| 14935   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 14957   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 14936   const intptr_t id = ring->GetIdForObject(raw()); | 14958   const intptr_t id = ring->GetIdForObject(raw()); | 
| 14937   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 14959   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 14938   const String& user_name = String::Handle(PrettyName()); | 14960   const String& user_name = String::Handle(PrettyName()); | 
| 14939   const String& vm_name = String::Handle(Name()); | 14961   const String& vm_name = String::Handle(Name()); | 
| 14940   AddNameProperties(&jsobj, user_name, vm_name); | 14962   AddNameProperties(&jsobj, user_name, vm_name); | 
| 14941   if (ref) { | 14963   if (ref) { | 
| 14942     return; | 14964     return; | 
| 14943   } | 14965   } | 
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 15140   intptr_t len = OS::SNPrint( | 15162   intptr_t len = OS::SNPrint( | 
| 15141       NULL, 0, format, name_cstr, index(), cls_cstr, bound_cstr) + 1; | 15163       NULL, 0, format, name_cstr, index(), cls_cstr, bound_cstr) + 1; | 
| 15142   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 15164   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 15143   OS::SNPrint(chars, len, format, name_cstr, index(), cls_cstr, bound_cstr); | 15165   OS::SNPrint(chars, len, format, name_cstr, index(), cls_cstr, bound_cstr); | 
| 15144   return chars; | 15166   return chars; | 
| 15145 } | 15167 } | 
| 15146 | 15168 | 
| 15147 | 15169 | 
| 15148 void TypeParameter::PrintJSONImpl(JSONStream* stream, bool ref) const { | 15170 void TypeParameter::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 15149   JSONObject jsobj(stream); | 15171   JSONObject jsobj(stream); | 
|  | 15172   AddTypeProperties(&jsobj, "TypeParameter", JSONType(), ref); | 
| 15150   PrintSharedInstanceJSON(&jsobj, ref); | 15173   PrintSharedInstanceJSON(&jsobj, ref); | 
| 15151   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 15174   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 15152   const intptr_t id = ring->GetIdForObject(raw()); | 15175   const intptr_t id = ring->GetIdForObject(raw()); | 
| 15153   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 15176   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 15154   const String& user_name = String::Handle(PrettyName()); | 15177   const String& user_name = String::Handle(PrettyName()); | 
| 15155   const String& vm_name = String::Handle(Name()); | 15178   const String& vm_name = String::Handle(Name()); | 
| 15156   AddNameProperties(&jsobj, user_name, vm_name); | 15179   AddNameProperties(&jsobj, user_name, vm_name); | 
| 15157   const Class& param_cls = Class::Handle(parameterized_class()); | 15180   const Class& param_cls = Class::Handle(parameterized_class()); | 
| 15158   jsobj.AddProperty("parameterizedClass", param_cls); | 15181   jsobj.AddProperty("parameterizedClass", param_cls); | 
| 15159   if (ref) { | 15182   if (ref) { | 
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 15343       NULL, 0, format, type_cstr, bound_cstr, type_param_cstr, cls_cstr) + 1; | 15366       NULL, 0, format, type_cstr, bound_cstr, type_param_cstr, cls_cstr) + 1; | 
| 15344   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 15367   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 15345   OS::SNPrint( | 15368   OS::SNPrint( | 
| 15346       chars, len, format, type_cstr, bound_cstr, type_param_cstr, cls_cstr); | 15369       chars, len, format, type_cstr, bound_cstr, type_param_cstr, cls_cstr); | 
| 15347   return chars; | 15370   return chars; | 
| 15348 } | 15371 } | 
| 15349 | 15372 | 
| 15350 | 15373 | 
| 15351 void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const { | 15374 void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 15352   JSONObject jsobj(stream); | 15375   JSONObject jsobj(stream); | 
|  | 15376   AddTypeProperties(&jsobj, "BoundedType", JSONType(), ref); | 
| 15353   PrintSharedInstanceJSON(&jsobj, ref); | 15377   PrintSharedInstanceJSON(&jsobj, ref); | 
| 15354   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 15378   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 15355   const intptr_t id = ring->GetIdForObject(raw()); | 15379   const intptr_t id = ring->GetIdForObject(raw()); | 
| 15356   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 15380   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 15357   const String& user_name = String::Handle(PrettyName()); | 15381   const String& user_name = String::Handle(PrettyName()); | 
| 15358   const String& vm_name = String::Handle(Name()); | 15382   const String& vm_name = String::Handle(Name()); | 
| 15359   AddNameProperties(&jsobj, user_name, vm_name); | 15383   AddNameProperties(&jsobj, user_name, vm_name); | 
| 15360   if (ref) { | 15384   if (ref) { | 
| 15361     return; | 15385     return; | 
| 15362   } | 15386   } | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 15436 | 15460 | 
| 15437 | 15461 | 
| 15438 const char* Number::ToCString() const { | 15462 const char* Number::ToCString() const { | 
| 15439   // Number is an interface. No instances of Number should exist. | 15463   // Number is an interface. No instances of Number should exist. | 
| 15440   UNREACHABLE(); | 15464   UNREACHABLE(); | 
| 15441   return "Number"; | 15465   return "Number"; | 
| 15442 } | 15466 } | 
| 15443 | 15467 | 
| 15444 | 15468 | 
| 15445 void Number::PrintJSONImpl(JSONStream* stream, bool ref) const { | 15469 void Number::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 15446   JSONObject jsobj(stream); | 15470   UNREACHABLE(); | 
| 15447   PrintSharedInstanceJSON(&jsobj, ref); |  | 
| 15448   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); |  | 
| 15449   const intptr_t id = ring->GetIdForObject(raw()); |  | 
| 15450   jsobj.AddPropertyF("id", "objects/%" Pd "", id); |  | 
| 15451   jsobj.AddProperty("valueAsString", ToCString()); |  | 
| 15452 } | 15471 } | 
| 15453 | 15472 | 
| 15454 | 15473 | 
| 15455 const char* Integer::ToCString() const { | 15474 const char* Integer::ToCString() const { | 
| 15456   // Integer is an interface. No instances of Integer should exist. | 15475   // Integer is an interface. No instances of Integer should exist. | 
| 15457   UNREACHABLE(); | 15476   UNREACHABLE(); | 
| 15458   return "Integer"; | 15477   return "Integer"; | 
| 15459 } | 15478 } | 
| 15460 | 15479 | 
| 15461 | 15480 | 
| 15462 void Integer::PrintJSONImpl(JSONStream* stream, bool ref) const { | 15481 void Integer::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 15463   Number::PrintJSONImpl(stream, ref); | 15482   JSONObject jsobj(stream); | 
|  | 15483   AddTypeProperties(&jsobj, "int", JSONType(), ref); | 
|  | 15484   PrintSharedInstanceJSON(&jsobj, ref); | 
|  | 15485   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
|  | 15486   const intptr_t id = ring->GetIdForObject(raw()); | 
|  | 15487   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
|  | 15488   jsobj.AddProperty("valueAsString", ToCString()); | 
| 15464 } | 15489 } | 
| 15465 | 15490 | 
| 15466 | 15491 | 
| 15467 // Throw JavascriptIntegerOverflow exception. | 15492 // Throw JavascriptIntegerOverflow exception. | 
| 15468 static void ThrowJavascriptIntegerOverflow(const Integer& i) { | 15493 static void ThrowJavascriptIntegerOverflow(const Integer& i) { | 
| 15469   const Array& exc_args = Array::Handle(Array::New(1)); | 15494   const Array& exc_args = Array::Handle(Array::New(1)); | 
| 15470   const String& i_str = String::Handle(String::New(i.ToCString())); | 15495   const String& i_str = String::Handle(String::New(i.ToCString())); | 
| 15471   exc_args.SetAt(0, i_str); | 15496   exc_args.SetAt(0, i_str); | 
| 15472   Exceptions::ThrowByType(Exceptions::kJavascriptIntegerOverflowError, | 15497   Exceptions::ThrowByType(Exceptions::kJavascriptIntegerOverflowError, | 
| 15473       exc_args); | 15498       exc_args); | 
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 15886   // Calculate the size of the string. | 15911   // Calculate the size of the string. | 
| 15887   intptr_t len = OS::SNPrint(NULL, 0, kFormat, Value()) + 1; | 15912   intptr_t len = OS::SNPrint(NULL, 0, kFormat, Value()) + 1; | 
| 15888   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 15913   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 15889   OS::SNPrint(chars, len, kFormat, Value()); | 15914   OS::SNPrint(chars, len, kFormat, Value()); | 
| 15890   return chars; | 15915   return chars; | 
| 15891 } | 15916 } | 
| 15892 | 15917 | 
| 15893 | 15918 | 
| 15894 void Smi::PrintJSONImpl(JSONStream* stream, bool ref) const { | 15919 void Smi::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 15895   JSONObject jsobj(stream); | 15920   JSONObject jsobj(stream); | 
|  | 15921   AddTypeProperties(&jsobj, "int", JSONType(), ref); | 
| 15896   PrintSharedInstanceJSON(&jsobj, ref); | 15922   PrintSharedInstanceJSON(&jsobj, ref); | 
| 15897   jsobj.AddPropertyF("id", "objects/int-%" Pd "", Value()); | 15923   jsobj.AddPropertyF("id", "objects/int-%" Pd "", Value()); | 
| 15898   jsobj.AddPropertyF("valueAsString", "%" Pd "", Value()); | 15924   jsobj.AddPropertyF("valueAsString", "%" Pd "", Value()); | 
| 15899 } | 15925 } | 
| 15900 | 15926 | 
| 15901 | 15927 | 
| 15902 RawClass* Smi::Class() { | 15928 RawClass* Smi::Class() { | 
| 15903   return Isolate::Current()->object_store()->smi_class(); | 15929   return Isolate::Current()->object_store()->smi_class(); | 
| 15904 } | 15930 } | 
| 15905 | 15931 | 
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 16012   const char* kFormat = "%lld"; | 16038   const char* kFormat = "%lld"; | 
| 16013   // Calculate the size of the string. | 16039   // Calculate the size of the string. | 
| 16014   intptr_t len = OS::SNPrint(NULL, 0, kFormat, value()) + 1; | 16040   intptr_t len = OS::SNPrint(NULL, 0, kFormat, value()) + 1; | 
| 16015   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 16041   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 16016   OS::SNPrint(chars, len, kFormat, value()); | 16042   OS::SNPrint(chars, len, kFormat, value()); | 
| 16017   return chars; | 16043   return chars; | 
| 16018 } | 16044 } | 
| 16019 | 16045 | 
| 16020 | 16046 | 
| 16021 void Mint::PrintJSONImpl(JSONStream* stream, bool ref) const { | 16047 void Mint::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 16022   Number::PrintJSONImpl(stream, ref); | 16048   Integer::PrintJSONImpl(stream, ref); | 
| 16023 } | 16049 } | 
| 16024 | 16050 | 
| 16025 | 16051 | 
| 16026 void Double::set_value(double value) const { | 16052 void Double::set_value(double value) const { | 
| 16027   raw_ptr()->value_ = value; | 16053   raw_ptr()->value_ = value; | 
| 16028 } | 16054 } | 
| 16029 | 16055 | 
| 16030 | 16056 | 
| 16031 bool Double::BitwiseEqualsToDouble(double value) const { | 16057 bool Double::BitwiseEqualsToDouble(double value) const { | 
| 16032   intptr_t value_offset = Double::value_offset(); | 16058   intptr_t value_offset = Double::value_offset(); | 
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 16144   } | 16170   } | 
| 16145   const int kBufferSize = 128; | 16171   const int kBufferSize = 128; | 
| 16146   char* buffer = Isolate::Current()->current_zone()->Alloc<char>(kBufferSize); | 16172   char* buffer = Isolate::Current()->current_zone()->Alloc<char>(kBufferSize); | 
| 16147   buffer[kBufferSize - 1] = '\0'; | 16173   buffer[kBufferSize - 1] = '\0'; | 
| 16148   DoubleToCString(value(), buffer, kBufferSize); | 16174   DoubleToCString(value(), buffer, kBufferSize); | 
| 16149   return buffer; | 16175   return buffer; | 
| 16150 } | 16176 } | 
| 16151 | 16177 | 
| 16152 | 16178 | 
| 16153 void Double::PrintJSONImpl(JSONStream* stream, bool ref) const { | 16179 void Double::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 16154   Number::PrintJSONImpl(stream, ref); | 16180   JSONObject jsobj(stream); | 
|  | 16181   // Suppress the fact that the internal vm name for this type is | 
|  | 16182   // "Double".  Return "double" instead. | 
|  | 16183   AddTypeProperties(&jsobj, "double", "double", ref); | 
|  | 16184   PrintSharedInstanceJSON(&jsobj, ref); | 
|  | 16185   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
|  | 16186   const intptr_t id = ring->GetIdForObject(raw()); | 
|  | 16187   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
|  | 16188   jsobj.AddProperty("valueAsString", ToCString()); | 
| 16155 } | 16189 } | 
| 16156 | 16190 | 
| 16157 | 16191 | 
| 16158 RawBigint* Integer::AsBigint() const { | 16192 RawBigint* Integer::AsBigint() const { | 
| 16159   ASSERT(!IsNull()); | 16193   ASSERT(!IsNull()); | 
| 16160   if (IsSmi()) { | 16194   if (IsSmi()) { | 
| 16161     Smi& smi = Smi::Handle(); | 16195     Smi& smi = Smi::Handle(); | 
| 16162     smi ^= raw(); | 16196     smi ^= raw(); | 
| 16163     return BigintOperations::NewFromSmi(smi); | 16197     return BigintOperations::NewFromSmi(smi); | 
| 16164   } else if (IsMint()) { | 16198   } else if (IsMint()) { | 
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 16320   return zone->AllocUnsafe(size); | 16354   return zone->AllocUnsafe(size); | 
| 16321 } | 16355 } | 
| 16322 | 16356 | 
| 16323 | 16357 | 
| 16324 const char* Bigint::ToCString() const { | 16358 const char* Bigint::ToCString() const { | 
| 16325   return BigintOperations::ToDecimalCString(*this, &BigintAllocator); | 16359   return BigintOperations::ToDecimalCString(*this, &BigintAllocator); | 
| 16326 } | 16360 } | 
| 16327 | 16361 | 
| 16328 | 16362 | 
| 16329 void Bigint::PrintJSONImpl(JSONStream* stream, bool ref) const { | 16363 void Bigint::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 16330   Number::PrintJSONImpl(stream, ref); | 16364   Integer::PrintJSONImpl(stream, ref); | 
| 16331 } | 16365 } | 
| 16332 | 16366 | 
| 16333 | 16367 | 
| 16334 // Synchronize with implementation in compiler (intrinsifier). | 16368 // Synchronize with implementation in compiler (intrinsifier). | 
| 16335 class StringHasher : ValueObject { | 16369 class StringHasher : ValueObject { | 
| 16336  public: | 16370  public: | 
| 16337   StringHasher() : hash_(0) {} | 16371   StringHasher() : hash_(0) {} | 
| 16338   void Add(int32_t ch) { | 16372   void Add(int32_t ch) { | 
| 16339     hash_ = CombineHashes(hash_, ch); | 16373     hash_ = CombineHashes(hash_, ch); | 
| 16340   } | 16374   } | 
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 17235   JSONObject jsobj(stream); | 17269   JSONObject jsobj(stream); | 
| 17236   if (raw() == Symbols::OptimizedOut().raw()) { | 17270   if (raw() == Symbols::OptimizedOut().raw()) { | 
| 17237     // TODO(turnidge): This is a hack.  The user could have this | 17271     // TODO(turnidge): This is a hack.  The user could have this | 
| 17238     // special string in their program.  Fixing this involves updating | 17272     // special string in their program.  Fixing this involves updating | 
| 17239     // the debugging api a bit. | 17273     // the debugging api a bit. | 
| 17240     jsobj.AddProperty("type", "Sentinel"); | 17274     jsobj.AddProperty("type", "Sentinel"); | 
| 17241     jsobj.AddProperty("id", "objects/optimized-out"); | 17275     jsobj.AddProperty("id", "objects/optimized-out"); | 
| 17242     jsobj.AddProperty("valueAsString", "<optimized out>"); | 17276     jsobj.AddProperty("valueAsString", "<optimized out>"); | 
| 17243     return; | 17277     return; | 
| 17244   } | 17278   } | 
|  | 17279   AddTypeProperties(&jsobj, "String", JSONType(), ref); | 
| 17245   PrintSharedInstanceJSON(&jsobj, ref); | 17280   PrintSharedInstanceJSON(&jsobj, ref); | 
| 17246   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 17281   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 17247   const intptr_t id = ring->GetIdForObject(raw()); | 17282   const intptr_t id = ring->GetIdForObject(raw()); | 
| 17248   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 17283   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 17249   jsobj.AddProperty("valueAsString", ToUserCString(1024)); | 17284   jsobj.AddProperty("valueAsString", ToUserCString(1024)); | 
| 17250 } | 17285 } | 
| 17251 | 17286 | 
| 17252 | 17287 | 
| 17253 void String::ToUTF8(uint8_t* utf8_array, intptr_t array_len) const { | 17288 void String::ToUTF8(uint8_t* utf8_array, intptr_t array_len) const { | 
| 17254   ASSERT(array_len >= Utf8::Length(*this)); | 17289   ASSERT(array_len >= Utf8::Length(*this)); | 
| (...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 18104 | 18139 | 
| 18105 | 18140 | 
| 18106 const char* Bool::ToCString() const { | 18141 const char* Bool::ToCString() const { | 
| 18107   return value() ? "true" : "false"; | 18142   return value() ? "true" : "false"; | 
| 18108 } | 18143 } | 
| 18109 | 18144 | 
| 18110 | 18145 | 
| 18111 void Bool::PrintJSONImpl(JSONStream* stream, bool ref) const { | 18146 void Bool::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 18112   const char* str = ToCString(); | 18147   const char* str = ToCString(); | 
| 18113   JSONObject jsobj(stream); | 18148   JSONObject jsobj(stream); | 
| 18114   jsobj.AddProperty("type", JSONType(ref)); | 18149   // Suppress the fact that the internal vm name for this type is | 
|  | 18150   // "Bool".  Return "bool" instead. | 
|  | 18151   AddTypeProperties(&jsobj, "bool", "bool", ref); | 
|  | 18152   PrintSharedInstanceJSON(&jsobj, ref); | 
| 18115   jsobj.AddPropertyF("id", "objects/bool-%s", str); | 18153   jsobj.AddPropertyF("id", "objects/bool-%s", str); | 
| 18116   const Class& cls = Class::Handle(this->clazz()); |  | 
| 18117   jsobj.AddProperty("class", cls); |  | 
| 18118   jsobj.AddPropertyF("valueAsString", "%s", str); | 18154   jsobj.AddPropertyF("valueAsString", "%s", str); | 
| 18119 } | 18155 } | 
| 18120 | 18156 | 
| 18121 | 18157 | 
| 18122 bool Array::CanonicalizeEquals(const Instance& other) const { | 18158 bool Array::CanonicalizeEquals(const Instance& other) const { | 
| 18123   if (this->raw() == other.raw()) { | 18159   if (this->raw() == other.raw()) { | 
| 18124     // Both handles point to the same raw instance. | 18160     // Both handles point to the same raw instance. | 
| 18125     return true; | 18161     return true; | 
| 18126   } | 18162   } | 
| 18127 | 18163 | 
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 18225       "_ImmutableList len:%" Pd : "_List len:%" Pd; | 18261       "_ImmutableList len:%" Pd : "_List len:%" Pd; | 
| 18226   intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1; | 18262   intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1; | 
| 18227   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 18263   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 18228   OS::SNPrint(chars, len, format, Length()); | 18264   OS::SNPrint(chars, len, format, Length()); | 
| 18229   return chars; | 18265   return chars; | 
| 18230 } | 18266 } | 
| 18231 | 18267 | 
| 18232 | 18268 | 
| 18233 void Array::PrintJSONImpl(JSONStream* stream, bool ref) const { | 18269 void Array::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 18234   JSONObject jsobj(stream); | 18270   JSONObject jsobj(stream); | 
|  | 18271   AddTypeProperties(&jsobj, "List", JSONType(), ref); | 
| 18235   PrintSharedInstanceJSON(&jsobj, ref); | 18272   PrintSharedInstanceJSON(&jsobj, ref); | 
| 18236   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 18273   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 18237   const intptr_t id = ring->GetIdForObject(raw()); | 18274   const intptr_t id = ring->GetIdForObject(raw()); | 
| 18238   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 18275   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 18239   jsobj.AddProperty("length", Length()); | 18276   jsobj.AddProperty("length", Length()); | 
| 18240   if (ref) { | 18277   if (ref) { | 
| 18241     return; | 18278     return; | 
| 18242   } | 18279   } | 
| 18243   { | 18280   { | 
| 18244     JSONArray jsarr(&jsobj, "elements"); | 18281     JSONArray jsarr(&jsobj, "elements"); | 
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 18469   intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1; | 18506   intptr_t len = OS::SNPrint(NULL, 0, format, Length()) + 1; | 
| 18470   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 18507   char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); | 
| 18471   OS::SNPrint(chars, len, format, Length()); | 18508   OS::SNPrint(chars, len, format, Length()); | 
| 18472   return chars; | 18509   return chars; | 
| 18473 } | 18510 } | 
| 18474 | 18511 | 
| 18475 | 18512 | 
| 18476 void GrowableObjectArray::PrintJSONImpl(JSONStream* stream, | 18513 void GrowableObjectArray::PrintJSONImpl(JSONStream* stream, | 
| 18477                                         bool ref) const { | 18514                                         bool ref) const { | 
| 18478   JSONObject jsobj(stream); | 18515   JSONObject jsobj(stream); | 
|  | 18516   AddTypeProperties(&jsobj, "List", JSONType(), ref); | 
| 18479   PrintSharedInstanceJSON(&jsobj, ref); | 18517   PrintSharedInstanceJSON(&jsobj, ref); | 
| 18480   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 18518   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 18481   const intptr_t id = ring->GetIdForObject(raw()); | 18519   const intptr_t id = ring->GetIdForObject(raw()); | 
| 18482   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 18520   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 18483   jsobj.AddProperty("length", Length()); | 18521   jsobj.AddProperty("length", Length()); | 
| 18484   if (ref) { | 18522   if (ref) { | 
| 18485     return; | 18523     return; | 
| 18486   } | 18524   } | 
| 18487   { | 18525   { | 
| 18488     JSONArray jsarr(&jsobj, "elements"); | 18526     JSONArray jsarr(&jsobj, "elements"); | 
| (...skipping 1039 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 19528 } | 19566 } | 
| 19529 | 19567 | 
| 19530 | 19568 | 
| 19531 const char* WeakProperty::ToCString() const { | 19569 const char* WeakProperty::ToCString() const { | 
| 19532   return "_WeakProperty"; | 19570   return "_WeakProperty"; | 
| 19533 } | 19571 } | 
| 19534 | 19572 | 
| 19535 | 19573 | 
| 19536 void WeakProperty::PrintJSONImpl(JSONStream* stream, bool ref) const { | 19574 void WeakProperty::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 19537   JSONObject jsobj(stream); | 19575   JSONObject jsobj(stream); | 
|  | 19576   AddTypeProperties(&jsobj, "Instance", JSONType(), ref); | 
| 19538   PrintSharedInstanceJSON(&jsobj, ref); | 19577   PrintSharedInstanceJSON(&jsobj, ref); | 
| 19539   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 19578   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 19540   const intptr_t id = ring->GetIdForObject(raw()); | 19579   const intptr_t id = ring->GetIdForObject(raw()); | 
| 19541   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 19580   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 19542 | 19581 | 
| 19543   if (ref) { | 19582   if (ref) { | 
| 19544     return; | 19583     return; | 
| 19545   } | 19584   } | 
| 19546 | 19585 | 
| 19547   const Object& key_handle = Object::Handle(key()); | 19586   const Object& key_handle = Object::Handle(key()); | 
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 19601 } | 19640 } | 
| 19602 | 19641 | 
| 19603 | 19642 | 
| 19604 const char* MirrorReference::ToCString() const { | 19643 const char* MirrorReference::ToCString() const { | 
| 19605   return "_MirrorReference"; | 19644   return "_MirrorReference"; | 
| 19606 } | 19645 } | 
| 19607 | 19646 | 
| 19608 | 19647 | 
| 19609 void MirrorReference::PrintJSONImpl(JSONStream* stream, bool ref) const { | 19648 void MirrorReference::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 19610   JSONObject jsobj(stream); | 19649   JSONObject jsobj(stream); | 
|  | 19650   AddTypeProperties(&jsobj, "Instance", JSONType(), ref); | 
| 19611   PrintSharedInstanceJSON(&jsobj, ref); | 19651   PrintSharedInstanceJSON(&jsobj, ref); | 
| 19612   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 19652   ObjectIdRing* ring = Isolate::Current()->object_id_ring(); | 
| 19613   const intptr_t id = ring->GetIdForObject(raw()); | 19653   const intptr_t id = ring->GetIdForObject(raw()); | 
| 19614   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 19654   jsobj.AddPropertyF("id", "objects/%" Pd "", id); | 
| 19615 | 19655 | 
| 19616   if (ref) { | 19656   if (ref) { | 
| 19617     return; | 19657     return; | 
| 19618   } | 19658   } | 
| 19619 | 19659 | 
| 19620   const Object& referent_handle = Object::Handle(referent()); | 19660   const Object& referent_handle = Object::Handle(referent()); | 
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 19750   return tag_label.ToCString(); | 19790   return tag_label.ToCString(); | 
| 19751 } | 19791 } | 
| 19752 | 19792 | 
| 19753 | 19793 | 
| 19754 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 19794 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 
| 19755   Instance::PrintJSONImpl(stream, ref); | 19795   Instance::PrintJSONImpl(stream, ref); | 
| 19756 } | 19796 } | 
| 19757 | 19797 | 
| 19758 | 19798 | 
| 19759 }  // namespace dart | 19799 }  // namespace dart | 
| OLD | NEW | 
|---|