| Index: runtime/vm/thread_registry.cc
 | 
| diff --git a/runtime/vm/thread_registry.cc b/runtime/vm/thread_registry.cc
 | 
| index c660843c1eac3bd892de539293114b2dae1632c6..eb39501bc0db930332b1975252287f3673306a72 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,19 @@ void ThreadRegistry::PrepareForGC() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +#ifndef PRODUCT
 | 
| +void ThreadRegistry::PrintJSON(JSONStream* stream) const {
 | 
| +  MonitorLocker ml(threads_lock());
 | 
| +  JSONArray threads(stream);
 | 
| +  Thread* current = active_list_;
 | 
| +  while (current != NULL) {
 | 
| +    threads.AddValue(current);
 | 
| +    current = current->next_;
 | 
| +  }
 | 
| +}
 | 
| +#endif
 | 
| +
 | 
| +
 | 
|  void ThreadRegistry::AddToActiveListLocked(Thread* thread) {
 | 
|    ASSERT(thread != NULL);
 | 
|    ASSERT(threads_lock()->IsOwnedByCurrentThread());
 | 
| 
 |