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" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 void Class::PrintJSONImpl(JSONStream* stream, bool ref) const { | 77 void Class::PrintJSONImpl(JSONStream* stream, bool ref) const { |
78 Isolate* isolate = Isolate::Current(); | 78 Isolate* isolate = Isolate::Current(); |
79 JSONObject jsobj(stream); | 79 JSONObject jsobj(stream); |
80 if ((raw() == Class::null()) || (id() == kFreeListElement)) { | 80 if ((raw() == Class::null()) || (id() == kFreeListElement)) { |
81 // TODO(turnidge): This is weird and needs to be changed. | 81 // TODO(turnidge): This is weird and needs to be changed. |
82 jsobj.AddProperty("type", "null"); | 82 jsobj.AddProperty("type", "null"); |
83 return; | 83 return; |
84 } | 84 } |
85 AddCommonObjectProperties(&jsobj, "Class", ref); | 85 AddCommonObjectProperties(&jsobj, "Class", ref); |
86 jsobj.AddFixedServiceId("classes/%" Pd "", id()); | 86 jsobj.AddFixedServiceId("classes/%" Pd "", id()); |
87 const String& user_name = String::Handle(PrettyName()); | 87 const String& scrubbed_name = String::Handle(ScrubbedName()); |
88 const String& vm_name = String::Handle(Name()); | 88 const String& vm_name = String::Handle(Name()); |
89 AddNameProperties(&jsobj, user_name, vm_name); | 89 AddNameProperties(&jsobj, scrubbed_name, vm_name); |
90 if (ref) { | 90 if (ref) { |
91 return; | 91 return; |
92 } | 92 } |
93 | 93 |
94 const Error& err = Error::Handle(EnsureIsFinalized(Thread::Current())); | 94 const Error& err = Error::Handle(EnsureIsFinalized(Thread::Current())); |
95 if (!err.IsNull()) { | 95 if (!err.IsNull()) { |
96 jsobj.AddProperty("error", err); | 96 jsobj.AddProperty("error", err); |
97 } | 97 } |
98 jsobj.AddProperty("abstract", is_abstract()); | 98 jsobj.AddProperty("abstract", is_abstract()); |
99 jsobj.AddProperty("const", is_const()); | 99 jsobj.AddProperty("const", is_const()); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 JSONObject jsobj(stream); | 177 JSONObject jsobj(stream); |
178 // The index in the canonical_type_arguments table cannot be used as part of | 178 // The index in the canonical_type_arguments table cannot be used as part of |
179 // the object id (as in typearguments/id), because the indices are not | 179 // the object id (as in typearguments/id), because the indices are not |
180 // preserved when the table grows and the entries get rehashed. Use the ring. | 180 // preserved when the table grows and the entries get rehashed. Use the ring. |
181 Isolate* isolate = Isolate::Current(); | 181 Isolate* isolate = Isolate::Current(); |
182 ObjectStore* object_store = isolate->object_store(); | 182 ObjectStore* object_store = isolate->object_store(); |
183 const Array& table = Array::Handle(object_store->canonical_type_arguments()); | 183 const Array& table = Array::Handle(object_store->canonical_type_arguments()); |
184 ASSERT(table.Length() > 0); | 184 ASSERT(table.Length() > 0); |
185 AddCommonObjectProperties(&jsobj, "TypeArguments", ref); | 185 AddCommonObjectProperties(&jsobj, "TypeArguments", ref); |
186 jsobj.AddServiceId(*this); | 186 jsobj.AddServiceId(*this); |
187 const String& user_name = String::Handle(PrettyName()); | 187 const String& user_name = String::Handle(UserVisibleName()); |
188 const String& vm_name = String::Handle(Name()); | 188 const String& vm_name = String::Handle(Name()); |
189 AddNameProperties(&jsobj, user_name, vm_name); | 189 AddNameProperties(&jsobj, user_name, vm_name); |
190 if (ref) { | 190 if (ref) { |
191 return; | 191 return; |
192 } | 192 } |
193 { | 193 { |
194 JSONArray jsarr(&jsobj, "types"); | 194 JSONArray jsarr(&jsobj, "types"); |
195 AbstractType& type_arg = AbstractType::Handle(); | 195 AbstractType& type_arg = AbstractType::Handle(); |
196 for (intptr_t i = 0; i < Length(); i++) { | 196 for (intptr_t i = 0; i < Length(); i++) { |
197 type_arg = TypeAt(i); | 197 type_arg = TypeAt(i); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 | 263 |
264 void Function::PrintJSONImpl(JSONStream* stream, bool ref) const { | 264 void Function::PrintJSONImpl(JSONStream* stream, bool ref) const { |
265 Class& cls = Class::Handle(Owner()); | 265 Class& cls = Class::Handle(Owner()); |
266 ASSERT(!cls.IsNull()); | 266 ASSERT(!cls.IsNull()); |
267 Error& err = Error::Handle(); | 267 Error& err = Error::Handle(); |
268 err ^= cls.EnsureIsFinalized(Thread::Current()); | 268 err ^= cls.EnsureIsFinalized(Thread::Current()); |
269 ASSERT(err.IsNull()); | 269 ASSERT(err.IsNull()); |
270 JSONObject jsobj(stream); | 270 JSONObject jsobj(stream); |
271 AddCommonObjectProperties(&jsobj, "Function", ref); | 271 AddCommonObjectProperties(&jsobj, "Function", ref); |
272 AddFunctionServiceId(jsobj, *this, cls); | 272 AddFunctionServiceId(jsobj, *this, cls); |
273 const String& user_name = String::Handle(PrettyName()); | 273 const String& user_name = String::Handle(UserVisibleName()); |
274 const String& vm_name = String::Handle(name()); | 274 const String& vm_name = String::Handle(name()); |
275 AddNameProperties(&jsobj, user_name, vm_name); | 275 AddNameProperties(&jsobj, user_name, vm_name); |
276 const Function& parent = Function::Handle(parent_function()); | 276 const Function& parent = Function::Handle(parent_function()); |
277 if (!parent.IsNull()) { | 277 if (!parent.IsNull()) { |
278 jsobj.AddProperty("owner", parent); | 278 jsobj.AddProperty("owner", parent); |
279 } else if (cls.IsTopLevel()) { | 279 } else if (cls.IsTopLevel()) { |
280 const Library& library = Library::Handle(cls.library()); | 280 const Library& library = Library::Handle(cls.library()); |
281 jsobj.AddProperty("owner", library); | 281 jsobj.AddProperty("owner", library); |
282 } else { | 282 } else { |
283 jsobj.AddProperty("owner", cls); | 283 jsobj.AddProperty("owner", cls); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 334 |
335 void Field::PrintJSONImpl(JSONStream* stream, bool ref) const { | 335 void Field::PrintJSONImpl(JSONStream* stream, bool ref) const { |
336 JSONObject jsobj(stream); | 336 JSONObject jsobj(stream); |
337 Class& cls = Class::Handle(owner()); | 337 Class& cls = Class::Handle(owner()); |
338 String& field_name = String::Handle(name()); | 338 String& field_name = String::Handle(name()); |
339 field_name = String::EncodeIRI(field_name); | 339 field_name = String::EncodeIRI(field_name); |
340 AddCommonObjectProperties(&jsobj, "Field", ref); | 340 AddCommonObjectProperties(&jsobj, "Field", ref); |
341 jsobj.AddFixedServiceId("classes/%" Pd "/fields/%s", | 341 jsobj.AddFixedServiceId("classes/%" Pd "/fields/%s", |
342 cls.id(), field_name.ToCString()); | 342 cls.id(), field_name.ToCString()); |
343 | 343 |
344 const String& user_name = String::Handle(PrettyName()); | 344 const String& user_name = String::Handle(UserVisibleName()); |
345 const String& vm_name = String::Handle(name()); | 345 const String& vm_name = String::Handle(name()); |
346 AddNameProperties(&jsobj, user_name, vm_name); | 346 AddNameProperties(&jsobj, user_name, vm_name); |
347 if (cls.IsTopLevel()) { | 347 if (cls.IsTopLevel()) { |
348 const Library& library = Library::Handle(cls.library()); | 348 const Library& library = Library::Handle(cls.library()); |
349 jsobj.AddProperty("owner", library); | 349 jsobj.AddProperty("owner", library); |
350 } else { | 350 } else { |
351 jsobj.AddProperty("owner", cls); | 351 jsobj.AddProperty("owner", cls); |
352 } | 352 } |
353 | 353 |
354 AbstractType& declared_type = AbstractType::Handle(type()); | 354 AbstractType& declared_type = AbstractType::Handle(type()); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 } | 474 } |
475 | 475 |
476 | 476 |
477 void Library::PrintJSONImpl(JSONStream* stream, bool ref) const { | 477 void Library::PrintJSONImpl(JSONStream* stream, bool ref) const { |
478 intptr_t id = index(); | 478 intptr_t id = index(); |
479 ASSERT(id >= 0); | 479 ASSERT(id >= 0); |
480 JSONObject jsobj(stream); | 480 JSONObject jsobj(stream); |
481 AddCommonObjectProperties(&jsobj, "Library", ref); | 481 AddCommonObjectProperties(&jsobj, "Library", ref); |
482 jsobj.AddFixedServiceId("libraries/%" Pd "", id); | 482 jsobj.AddFixedServiceId("libraries/%" Pd "", id); |
483 const String& vm_name = String::Handle(name()); | 483 const String& vm_name = String::Handle(name()); |
484 const String& user_name = | 484 const String& scrubbed_name = String::Handle(String::ScrubName(vm_name)); |
485 String::Handle(String::IdentifierPrettyName(vm_name)); | 485 AddNameProperties(&jsobj, scrubbed_name, vm_name); |
486 AddNameProperties(&jsobj, user_name, vm_name); | |
487 const String& library_url = String::Handle(url()); | 486 const String& library_url = String::Handle(url()); |
488 jsobj.AddPropertyStr("uri", library_url); | 487 jsobj.AddPropertyStr("uri", library_url); |
489 if (ref) { | 488 if (ref) { |
490 return; | 489 return; |
491 } | 490 } |
492 jsobj.AddProperty("debuggable", IsDebuggable()); | 491 jsobj.AddProperty("debuggable", IsDebuggable()); |
493 { | 492 { |
494 JSONArray jsarr(&jsobj, "classes"); | 493 JSONArray jsarr(&jsobj, "classes"); |
495 ClassDictionaryIterator class_iter(*this); | 494 ClassDictionaryIterator class_iter(*this); |
496 Class& klass = Class::Handle(); | 495 Class& klass = Class::Handle(); |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 } | 811 } |
813 } | 812 } |
814 | 813 |
815 | 814 |
816 void Code::PrintJSONImpl(JSONStream* stream, bool ref) const { | 815 void Code::PrintJSONImpl(JSONStream* stream, bool ref) const { |
817 JSONObject jsobj(stream); | 816 JSONObject jsobj(stream); |
818 AddCommonObjectProperties(&jsobj, "Code", ref); | 817 AddCommonObjectProperties(&jsobj, "Code", ref); |
819 jsobj.AddFixedServiceId("code/%" Px64"-%" Px "", | 818 jsobj.AddFixedServiceId("code/%" Px64"-%" Px "", |
820 compile_timestamp(), | 819 compile_timestamp(), |
821 EntryPoint()); | 820 EntryPoint()); |
822 const String& user_name = String::Handle(PrettyName()); | 821 const String& qualified_name = String::Handle(QualifiedName()); |
823 const String& vm_name = String::Handle(Name()); | 822 const String& vm_name = String::Handle(Name()); |
824 AddNameProperties(&jsobj, user_name, vm_name); | 823 AddNameProperties(&jsobj, qualified_name, vm_name); |
825 const bool is_stub = IsStubCode() || IsAllocationStubCode(); | 824 const bool is_stub = IsStubCode() || IsAllocationStubCode(); |
826 if (is_stub) { | 825 if (is_stub) { |
827 jsobj.AddProperty("kind", "Stub"); | 826 jsobj.AddProperty("kind", "Stub"); |
828 } else { | 827 } else { |
829 jsobj.AddProperty("kind", "Dart"); | 828 jsobj.AddProperty("kind", "Dart"); |
830 } | 829 } |
831 jsobj.AddProperty("_optimized", is_optimized()); | 830 jsobj.AddProperty("_optimized", is_optimized()); |
832 const Object& obj = Object::Handle(owner()); | 831 const Object& obj = Object::Handle(owner()); |
833 if (obj.IsFunction()) { | 832 if (obj.IsFunction()) { |
834 const Function& func = Function::Cast(obj); | 833 const Function& func = Function::Cast(obj); |
835 jsobj.AddProperty("_intrinsic", func.is_intrinsic()); | 834 jsobj.AddProperty("_intrinsic", func.is_intrinsic()); |
836 jsobj.AddProperty("_native", func.is_native()); | 835 jsobj.AddProperty("_native", func.is_native()); |
837 } else { | 836 } else { |
838 jsobj.AddProperty("_intrinsic", false); | 837 jsobj.AddProperty("_intrinsic", false); |
839 jsobj.AddProperty("_native", false); | 838 jsobj.AddProperty("_native", false); |
840 } | 839 } |
841 if (ref) { | 840 if (ref) { |
842 return; | 841 return; |
843 } | 842 } |
844 if (obj.IsFunction()) { | 843 if (obj.IsFunction()) { |
845 jsobj.AddProperty("function", obj); | 844 jsobj.AddProperty("function", obj); |
846 } else { | 845 } else { |
847 // Generate a fake function reference. | 846 // Generate a fake function reference. |
848 JSONObject func(&jsobj, "function"); | 847 JSONObject func(&jsobj, "function"); |
849 func.AddProperty("type", "@Function"); | 848 func.AddProperty("type", "@Function"); |
850 func.AddProperty("_kind", "Stub"); | 849 func.AddProperty("_kind", "Stub"); |
851 func.AddProperty("name", user_name.ToCString()); | 850 ASSERT(qualified_name.Equals(vm_name)); |
852 AddNameProperties(&func, user_name, vm_name); | 851 func.AddProperty("name", vm_name.ToCString()); |
| 852 AddNameProperties(&func, vm_name, vm_name); |
853 } | 853 } |
854 jsobj.AddPropertyF("_startAddress", "%" Px "", EntryPoint()); | 854 jsobj.AddPropertyF("_startAddress", "%" Px "", EntryPoint()); |
855 jsobj.AddPropertyF("_endAddress", "%" Px "", EntryPoint() + Size()); | 855 jsobj.AddPropertyF("_endAddress", "%" Px "", EntryPoint() + Size()); |
856 jsobj.AddProperty("_alive", is_alive()); | 856 jsobj.AddProperty("_alive", is_alive()); |
857 const ObjectPool& object_pool = ObjectPool::Handle(GetObjectPool()); | 857 const ObjectPool& object_pool = ObjectPool::Handle(GetObjectPool()); |
858 jsobj.AddProperty("_objectPool", object_pool); | 858 jsobj.AddProperty("_objectPool", object_pool); |
859 { | 859 { |
860 JSONArray jsarr(&jsobj, "_disassembly"); | 860 JSONArray jsarr(&jsobj, "_disassembly"); |
861 if (is_alive()) { | 861 if (is_alive()) { |
862 // Only disassemble alive code objects. | 862 // Only disassemble alive code objects. |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1115 if (IsCanonical()) { | 1115 if (IsCanonical()) { |
1116 const Class& type_cls = Class::Handle(type_class()); | 1116 const Class& type_cls = Class::Handle(type_class()); |
1117 intptr_t id = type_cls.FindCanonicalTypeIndex(*this); | 1117 intptr_t id = type_cls.FindCanonicalTypeIndex(*this); |
1118 ASSERT(id >= 0); | 1118 ASSERT(id >= 0); |
1119 intptr_t cid = type_cls.id(); | 1119 intptr_t cid = type_cls.id(); |
1120 jsobj.AddFixedServiceId("classes/%" Pd "/types/%" Pd "", cid, id); | 1120 jsobj.AddFixedServiceId("classes/%" Pd "/types/%" Pd "", cid, id); |
1121 jsobj.AddProperty("typeClass", type_cls); | 1121 jsobj.AddProperty("typeClass", type_cls); |
1122 } else { | 1122 } else { |
1123 jsobj.AddServiceId(*this); | 1123 jsobj.AddServiceId(*this); |
1124 } | 1124 } |
1125 const String& user_name = String::Handle(PrettyName()); | 1125 const String& user_name = String::Handle(UserVisibleName()); |
1126 const String& vm_name = String::Handle(Name()); | 1126 const String& vm_name = String::Handle(Name()); |
1127 AddNameProperties(&jsobj, user_name, vm_name); | 1127 AddNameProperties(&jsobj, user_name, vm_name); |
1128 if (ref) { | 1128 if (ref) { |
1129 return; | 1129 return; |
1130 } | 1130 } |
1131 const TypeArguments& typeArgs = TypeArguments::Handle(arguments()); | 1131 const TypeArguments& typeArgs = TypeArguments::Handle(arguments()); |
1132 if (!typeArgs.IsNull()) { | 1132 if (!typeArgs.IsNull()) { |
1133 jsobj.AddProperty("typeArguments", typeArgs); | 1133 jsobj.AddProperty("typeArguments", typeArgs); |
1134 } | 1134 } |
1135 } | 1135 } |
1136 | 1136 |
1137 | 1137 |
1138 void FunctionType::PrintJSONImpl(JSONStream* stream, bool ref) const { | 1138 void FunctionType::PrintJSONImpl(JSONStream* stream, bool ref) const { |
1139 JSONObject jsobj(stream); | 1139 JSONObject jsobj(stream); |
1140 PrintSharedInstanceJSON(&jsobj, ref); | 1140 PrintSharedInstanceJSON(&jsobj, ref); |
1141 jsobj.AddProperty("kind", "FunctionType"); | 1141 jsobj.AddProperty("kind", "FunctionType"); |
1142 if (IsCanonical()) { | 1142 if (IsCanonical()) { |
1143 const Class& scope_cls = Class::Handle(scope_class()); | 1143 const Class& scope_cls = Class::Handle(scope_class()); |
1144 intptr_t id = scope_cls.FindCanonicalTypeIndex(*this); | 1144 intptr_t id = scope_cls.FindCanonicalTypeIndex(*this); |
1145 ASSERT(id >= 0); | 1145 ASSERT(id >= 0); |
1146 intptr_t cid = scope_cls.id(); | 1146 intptr_t cid = scope_cls.id(); |
1147 jsobj.AddFixedServiceId("classes/%" Pd "/types/%" Pd "", cid, id); | 1147 jsobj.AddFixedServiceId("classes/%" Pd "/types/%" Pd "", cid, id); |
1148 jsobj.AddProperty("scopeClass", scope_cls); | 1148 jsobj.AddProperty("scopeClass", scope_cls); |
1149 } else { | 1149 } else { |
1150 jsobj.AddServiceId(*this); | 1150 jsobj.AddServiceId(*this); |
1151 } | 1151 } |
1152 const String& user_name = String::Handle(PrettyName()); | 1152 const String& user_name = String::Handle(UserVisibleName()); |
1153 const String& vm_name = String::Handle(Name()); | 1153 const String& vm_name = String::Handle(Name()); |
1154 AddNameProperties(&jsobj, user_name, vm_name); | 1154 AddNameProperties(&jsobj, user_name, vm_name); |
1155 if (ref) { | 1155 if (ref) { |
1156 return; | 1156 return; |
1157 } | 1157 } |
1158 const TypeArguments& typeArgs = TypeArguments::Handle(arguments()); | 1158 const TypeArguments& typeArgs = TypeArguments::Handle(arguments()); |
1159 if (!typeArgs.IsNull()) { | 1159 if (!typeArgs.IsNull()) { |
1160 jsobj.AddProperty("typeArguments", typeArgs); | 1160 jsobj.AddProperty("typeArguments", typeArgs); |
1161 } | 1161 } |
1162 } | 1162 } |
1163 | 1163 |
1164 | 1164 |
1165 void TypeRef::PrintJSONImpl(JSONStream* stream, bool ref) const { | 1165 void TypeRef::PrintJSONImpl(JSONStream* stream, bool ref) const { |
1166 JSONObject jsobj(stream); | 1166 JSONObject jsobj(stream); |
1167 PrintSharedInstanceJSON(&jsobj, ref); | 1167 PrintSharedInstanceJSON(&jsobj, ref); |
1168 jsobj.AddProperty("kind", "TypeRef"); | 1168 jsobj.AddProperty("kind", "TypeRef"); |
1169 jsobj.AddServiceId(*this); | 1169 jsobj.AddServiceId(*this); |
1170 const String& user_name = String::Handle(PrettyName()); | 1170 const String& user_name = String::Handle(UserVisibleName()); |
1171 const String& vm_name = String::Handle(Name()); | 1171 const String& vm_name = String::Handle(Name()); |
1172 AddNameProperties(&jsobj, user_name, vm_name); | 1172 AddNameProperties(&jsobj, user_name, vm_name); |
1173 if (ref) { | 1173 if (ref) { |
1174 return; | 1174 return; |
1175 } | 1175 } |
1176 jsobj.AddProperty("targetType", AbstractType::Handle(type())); | 1176 jsobj.AddProperty("targetType", AbstractType::Handle(type())); |
1177 } | 1177 } |
1178 | 1178 |
1179 | 1179 |
1180 void TypeParameter::PrintJSONImpl(JSONStream* stream, bool ref) const { | 1180 void TypeParameter::PrintJSONImpl(JSONStream* stream, bool ref) const { |
1181 JSONObject jsobj(stream); | 1181 JSONObject jsobj(stream); |
1182 PrintSharedInstanceJSON(&jsobj, ref); | 1182 PrintSharedInstanceJSON(&jsobj, ref); |
1183 jsobj.AddProperty("kind", "TypeParameter"); | 1183 jsobj.AddProperty("kind", "TypeParameter"); |
1184 jsobj.AddServiceId(*this); | 1184 jsobj.AddServiceId(*this); |
1185 const String& user_name = String::Handle(PrettyName()); | 1185 const String& user_name = String::Handle(UserVisibleName()); |
1186 const String& vm_name = String::Handle(Name()); | 1186 const String& vm_name = String::Handle(Name()); |
1187 AddNameProperties(&jsobj, user_name, vm_name); | 1187 AddNameProperties(&jsobj, user_name, vm_name); |
1188 const Class& param_cls = Class::Handle(parameterized_class()); | 1188 const Class& param_cls = Class::Handle(parameterized_class()); |
1189 jsobj.AddProperty("parameterizedClass", param_cls); | 1189 jsobj.AddProperty("parameterizedClass", param_cls); |
1190 if (ref) { | 1190 if (ref) { |
1191 return; | 1191 return; |
1192 } | 1192 } |
1193 jsobj.AddProperty("parameterIndex", index()); | 1193 jsobj.AddProperty("parameterIndex", index()); |
1194 const AbstractType& upper_bound = AbstractType::Handle(bound()); | 1194 const AbstractType& upper_bound = AbstractType::Handle(bound()); |
1195 jsobj.AddProperty("bound", upper_bound); | 1195 jsobj.AddProperty("bound", upper_bound); |
1196 } | 1196 } |
1197 | 1197 |
1198 | 1198 |
1199 void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const { | 1199 void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const { |
1200 JSONObject jsobj(stream); | 1200 JSONObject jsobj(stream); |
1201 PrintSharedInstanceJSON(&jsobj, ref); | 1201 PrintSharedInstanceJSON(&jsobj, ref); |
1202 jsobj.AddProperty("kind", "BoundedType"); | 1202 jsobj.AddProperty("kind", "BoundedType"); |
1203 jsobj.AddServiceId(*this); | 1203 jsobj.AddServiceId(*this); |
1204 const String& user_name = String::Handle(PrettyName()); | 1204 const String& user_name = String::Handle(UserVisibleName()); |
1205 const String& vm_name = String::Handle(Name()); | 1205 const String& vm_name = String::Handle(Name()); |
1206 AddNameProperties(&jsobj, user_name, vm_name); | 1206 AddNameProperties(&jsobj, user_name, vm_name); |
1207 if (ref) { | 1207 if (ref) { |
1208 return; | 1208 return; |
1209 } | 1209 } |
1210 jsobj.AddProperty("targetType", AbstractType::Handle(type())); | 1210 jsobj.AddProperty("targetType", AbstractType::Handle(type())); |
1211 jsobj.AddProperty("bound", AbstractType::Handle(bound())); | 1211 jsobj.AddProperty("bound", AbstractType::Handle(bound())); |
1212 } | 1212 } |
1213 | 1213 |
1214 | 1214 |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1593 jsobj.AddProperty("mirrorReferent", referent_handle); | 1593 jsobj.AddProperty("mirrorReferent", referent_handle); |
1594 } | 1594 } |
1595 | 1595 |
1596 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 1596 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
1597 Instance::PrintJSONImpl(stream, ref); | 1597 Instance::PrintJSONImpl(stream, ref); |
1598 } | 1598 } |
1599 | 1599 |
1600 #endif | 1600 #endif |
1601 | 1601 |
1602 } // namespace dart | 1602 } // namespace dart |
OLD | NEW |