OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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/debugger.h" | 5 #include "vm/debugger.h" |
6 #include "vm/disassembler.h" | 6 #include "vm/disassembler.h" |
7 #include "vm/object.h" | 7 #include "vm/object.h" |
8 #include "vm/object_store.h" | 8 #include "vm/object_store.h" |
9 #include "vm/stub_code.h" | 9 #include "vm/stub_code.h" |
10 #include "vm/symbols.h" | 10 #include "vm/symbols.h" |
| 11 #include "vm/type_table.h" |
11 | 12 |
12 namespace dart { | 13 namespace dart { |
13 | 14 |
14 #ifndef PRODUCT | 15 #ifndef PRODUCT |
15 | 16 |
16 static void AddNameProperties(JSONObject* jsobj, | 17 static void AddNameProperties(JSONObject* jsobj, |
17 const String& name, | 18 const String& name, |
18 const String& vm_name) { | 19 const String& vm_name) { |
19 jsobj->AddProperty("name", name.ToCString()); | 20 jsobj->AddProperty("name", name.ToCString()); |
20 if (!name.Equals(vm_name)) { | 21 if (!name.Equals(vm_name)) { |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 void UnresolvedClass::PrintJSONImpl(JSONStream* stream, bool ref) const { | 181 void UnresolvedClass::PrintJSONImpl(JSONStream* stream, bool ref) const { |
181 Object::PrintJSONImpl(stream, ref); | 182 Object::PrintJSONImpl(stream, ref); |
182 } | 183 } |
183 | 184 |
184 | 185 |
185 void TypeArguments::PrintJSONImpl(JSONStream* stream, bool ref) const { | 186 void TypeArguments::PrintJSONImpl(JSONStream* stream, bool ref) const { |
186 JSONObject jsobj(stream); | 187 JSONObject jsobj(stream); |
187 // The index in the canonical_type_arguments table cannot be used as part of | 188 // The index in the canonical_type_arguments table cannot be used as part of |
188 // the object id (as in typearguments/id), because the indices are not | 189 // the object id (as in typearguments/id), because the indices are not |
189 // preserved when the table grows and the entries get rehashed. Use the ring. | 190 // preserved when the table grows and the entries get rehashed. Use the ring. |
190 Isolate* isolate = Isolate::Current(); | 191 Thread* thread = Thread::Current(); |
| 192 Zone* zone = thread->zone(); |
| 193 Isolate* isolate = thread->isolate(); |
191 ObjectStore* object_store = isolate->object_store(); | 194 ObjectStore* object_store = isolate->object_store(); |
192 const Array& table = Array::Handle(object_store->canonical_type_arguments()); | 195 CanonicalTypeArgumentsSet typeargs_table( |
| 196 zone, object_store->canonical_type_arguments()); |
| 197 const Array& table = |
| 198 Array::Handle(HashTables::ToArray(typeargs_table, false)); |
| 199 typeargs_table.Release(); |
193 ASSERT(table.Length() > 0); | 200 ASSERT(table.Length() > 0); |
194 AddCommonObjectProperties(&jsobj, "TypeArguments", ref); | 201 AddCommonObjectProperties(&jsobj, "TypeArguments", ref); |
195 jsobj.AddServiceId(*this); | 202 jsobj.AddServiceId(*this); |
196 const String& user_name = String::Handle(UserVisibleName()); | 203 const String& user_name = String::Handle(UserVisibleName()); |
197 const String& vm_name = String::Handle(Name()); | 204 const String& vm_name = String::Handle(Name()); |
198 AddNameProperties(&jsobj, user_name, vm_name); | 205 AddNameProperties(&jsobj, user_name, vm_name); |
199 if (ref) { | 206 if (ref) { |
200 return; | 207 return; |
201 } | 208 } |
202 { | 209 { |
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1123 UNREACHABLE(); | 1130 UNREACHABLE(); |
1124 } | 1131 } |
1125 | 1132 |
1126 | 1133 |
1127 void Type::PrintJSONImpl(JSONStream* stream, bool ref) const { | 1134 void Type::PrintJSONImpl(JSONStream* stream, bool ref) const { |
1128 JSONObject jsobj(stream); | 1135 JSONObject jsobj(stream); |
1129 PrintSharedInstanceJSON(&jsobj, ref); | 1136 PrintSharedInstanceJSON(&jsobj, ref); |
1130 jsobj.AddProperty("kind", "Type"); | 1137 jsobj.AddProperty("kind", "Type"); |
1131 if (IsCanonical()) { | 1138 if (IsCanonical()) { |
1132 const Class& type_cls = Class::Handle(type_class()); | 1139 const Class& type_cls = Class::Handle(type_class()); |
1133 intptr_t id = type_cls.FindCanonicalTypeIndex(*this); | 1140 if (type_cls.CanonicalType() == raw()) { |
1134 ASSERT(id >= 0); | 1141 intptr_t cid = type_cls.id(); |
1135 intptr_t cid = type_cls.id(); | 1142 jsobj.AddFixedServiceId("classes/%" Pd "/types/%d", cid, 0); |
1136 jsobj.AddFixedServiceId("classes/%" Pd "/types/%" Pd "", cid, id); | 1143 jsobj.AddProperty("typeClass", type_cls); |
1137 jsobj.AddProperty("typeClass", type_cls); | 1144 } else { |
| 1145 jsobj.AddServiceId(*this); |
| 1146 } |
1138 } else { | 1147 } else { |
1139 jsobj.AddServiceId(*this); | 1148 jsobj.AddServiceId(*this); |
1140 } | 1149 } |
1141 const String& user_name = String::Handle(UserVisibleName()); | 1150 const String& user_name = String::Handle(UserVisibleName()); |
1142 const String& vm_name = String::Handle(Name()); | 1151 const String& vm_name = String::Handle(Name()); |
1143 AddNameProperties(&jsobj, user_name, vm_name); | 1152 AddNameProperties(&jsobj, user_name, vm_name); |
1144 if (ref) { | 1153 if (ref) { |
1145 return; | 1154 return; |
1146 } | 1155 } |
1147 const TypeArguments& typeArgs = TypeArguments::Handle(arguments()); | 1156 const TypeArguments& typeArgs = TypeArguments::Handle(arguments()); |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1588 jsobj.AddProperty("mirrorReferent", referent_handle); | 1597 jsobj.AddProperty("mirrorReferent", referent_handle); |
1589 } | 1598 } |
1590 | 1599 |
1591 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 1600 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
1592 Instance::PrintJSONImpl(stream, ref); | 1601 Instance::PrintJSONImpl(stream, ref); |
1593 } | 1602 } |
1594 | 1603 |
1595 #endif | 1604 #endif |
1596 | 1605 |
1597 } // namespace dart | 1606 } // namespace dart |
OLD | NEW |