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 |