Index: runtime/vm/thread_registry.cc |
diff --git a/runtime/vm/thread_registry.cc b/runtime/vm/thread_registry.cc |
index c660843c1eac3bd892de539293114b2dae1632c6..fc68f52d5549f2072c4ec6ce14fd3576b48af98b 100644 |
--- a/runtime/vm/thread_registry.cc |
+++ b/runtime/vm/thread_registry.cc |
@@ -5,6 +5,7 @@ |
#include "vm/thread_registry.h" |
#include "vm/isolate.h" |
+#include "vm/json_stream.h" |
#include "vm/lockers.h" |
namespace dart { |
@@ -91,6 +92,24 @@ void ThreadRegistry::PrepareForGC() { |
} |
+#ifndef PRODUCT |
+void ThreadRegistry::PrintJSON(JSONStream* stream) const { |
+ MonitorLocker ml(threads_lock()); |
+ JSONArray threads(stream); |
+ PrintJSONHelper(&threads, active_list_); |
+ PrintJSONHelper(&threads, free_list_); |
Cutch
2016/12/08 22:25:54
We shouldn't include the free list. These are Thre
bkonyi
2016/12/08 22:42:01
I'll go ahead and remove this then.
|
+} |
+ |
+ |
+void ThreadRegistry::PrintJSONHelper(JSONArray* array, Thread* thread) const { |
+ while (thread != NULL) { |
+ array->AddValue(thread); |
+ thread = thread->next_; |
+ } |
+} |
+#endif |
+ |
+ |
void ThreadRegistry::AddToActiveListLocked(Thread* thread) { |
ASSERT(thread != NULL); |
ASSERT(threads_lock()->IsOwnedByCurrentThread()); |