Chromium Code Reviews| Index: runtime/vm/service.cc |
| =================================================================== |
| --- runtime/vm/service.cc (revision 37613) |
| +++ runtime/vm/service.cc (working copy) |
| @@ -1138,17 +1138,19 @@ |
| } |
| -class GetInstancesVisitor : public ObjectVisitor { |
| +class GetInstancesVisitor : public ObjectGraph::Visitor { |
| public: |
| - GetInstancesVisitor(Isolate* isolate, const Class& cls, const Array& storage) |
| - : ObjectVisitor(isolate), cls_(cls), storage_(storage), count_(0) {} |
| + GetInstancesVisitor(const Class& cls, const Array& storage) |
| + : cls_(cls), storage_(storage), count_(0) {} |
| - virtual void VisitObject(RawObject* raw_obj) { |
| + virtual Direction VisitObject(ObjectGraph::StackIterator* it) { |
| + RawObject* raw_obj = it->Get(); |
| if (raw_obj->IsFreeListElement()) { |
| - return; |
| + return kProceed; |
| } |
| - REUSABLE_OBJECT_HANDLESCOPE(isolate()); |
| - Object& obj = isolate()->ObjectHandle(); |
| + Isolate* isolate = Isolate::Current(); |
| + REUSABLE_OBJECT_HANDLESCOPE(isolate); |
| + Object& obj = isolate->ObjectHandle(); |
| obj = raw_obj; |
| if (obj.GetClassId() == cls_.id()) { |
| if (!storage_.IsNull() && count_ < storage_.Length()) { |
| @@ -1156,6 +1158,7 @@ |
| } |
| ++count_; |
| } |
| + return kProceed; |
| } |
| intptr_t count() const { return count_; } |
| @@ -1180,8 +1183,9 @@ |
| return true; |
| } |
| Array& storage = Array::Handle(Array::New(limit)); |
| - GetInstancesVisitor visitor(isolate, cls, storage); |
| - isolate->heap()->IterateObjects(&visitor); |
| + GetInstancesVisitor visitor(cls, storage); |
| + ObjectGraph graph(isolate); |
| + graph.IterateObjects(&visitor); |
| intptr_t count = visitor.count(); |
| if (count < limit) { |
| // Truncate the list using utility method for GrowableObjectArray. |
| @@ -1190,7 +1194,12 @@ |
| wrapper.SetLength(count); |
| storage = Array::MakeArray(wrapper); |
| } |
| - storage.PrintJSON(js, true); |
| + JSONObject jsobj(js); |
| + jsobj.AddProperty("type", "InstanceSet"); |
| + jsobj.AddProperty("id", "instance_set"); |
| + jsobj.AddProperty("total_count", count); |
|
Cutch
2014/06/24 15:56:39
use dartCamelCase for key names.
koda
2014/06/24 16:05:00
Done.
|
| + jsobj.AddProperty("sample_count", storage.Length()); |
| + jsobj.AddProperty("sample", storage); |
| return true; |
| } |