Index: runtime/vm/isolate.cc |
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc |
index aa851bfed4250cc6e7bd8dbb0b0b2c01f73a28ac..7360f82346e21de1cd626554c5af8d5c5a150f59 100644 |
--- a/runtime/vm/isolate.cc |
+++ b/runtime/vm/isolate.cc |
@@ -2091,6 +2091,14 @@ void Isolate::PrintJSON(JSONStream* stream, bool ref) { |
} |
} |
} |
+ |
+ |
+void Isolate::PrintThreadsInfoToJSONObject(JSONObject* obj) { |
+ obj->AddPropertyF("isolate_address", "0x%" Px "", |
+ reinterpret_cast<uword>(this)); |
siva
2016/12/07 22:12:52
Can we use isolate id instead of isolate address h
bkonyi
2016/12/08 18:04:14
Yes, I've gone ahead and switched from addresses t
|
+ ASSERT(thread_registry_ != NULL); |
+ thread_registry_->PrintToJSONObjectLocked(obj); |
+} |
#endif |
@@ -2488,6 +2496,20 @@ void Isolate::RemoveIsolateFromList(Isolate* isolate) { |
} |
+#ifndef RELEASE |
+void Isolate::PrintAllIsolatesMemoryInfoToJSONLocked(JSONStream* stream) { |
Cutch
2016/12/06 19:11:14
The suffix of 'Locked' is usually applied to funct
bkonyi
2016/12/08 18:04:13
Done.
|
+ MonitorLocker ml(isolates_list_monitor_); |
+ JSONArray arr(stream); |
+ Isolate* current = isolates_list_head_; |
+ while (current != NULL) { |
Cutch
2016/12/06 19:11:14
Please use Isolates::VisitIsolates instead of walk
bkonyi
2016/12/08 18:04:14
Done.
|
+ JSONObject isolate_obj(&arr); |
+ current->PrintThreadsInfoToJSONObject(&isolate_obj); |
+ current = current->next_; |
+ } |
+} |
+#endif |
+ |
+ |
void Isolate::DisableIsolateCreation() { |
MonitorLocker ml(isolates_list_monitor_); |
creation_enabled_ = false; |