| Index: src/isolate.cc | 
| diff --git a/src/isolate.cc b/src/isolate.cc | 
| index 37020da1559b70828dfceedf5eb75cb32391817b..7598051c34df468f9e8fd72c738f977ecef8e328 100644 | 
| --- a/src/isolate.cc | 
| +++ b/src/isolate.cc | 
| @@ -2595,21 +2595,25 @@ void Isolate::CheckDetachedContextsAfterGC() { | 
| detached_contexts->set(new_length, Smi::FromInt(mark_sweeps + 1)); | 
| detached_contexts->set(new_length + 1, cell); | 
| new_length += 2; | 
| +    } else { | 
| +      counters()->detached_context_age_in_gc()->AddSample(mark_sweeps); | 
| } | 
| } | 
| -  PrintF("%d detached contexts are collected out of %d\n", length - new_length, | 
| -         length); | 
| -  for (int i = 0; i < new_length; i += 2) { | 
| -    int mark_sweeps = Smi::cast(detached_contexts->get(i))->value(); | 
| -    WeakCell* cell = WeakCell::cast(detached_contexts->get(i + 1)); | 
| -    if (mark_sweeps > 3) { | 
| -      PrintF("detached context 0x%p\n survived %d GCs (leak?)\n", | 
| -             static_cast<void*>(cell->value()), mark_sweeps); | 
| +  if (FLAG_trace_detached_contexts) { | 
| +    PrintF("%d detached contexts are collected out of %d\n", | 
| +           length - new_length, length); | 
| +    for (int i = 0; i < new_length; i += 2) { | 
| +      int mark_sweeps = Smi::cast(detached_contexts->get(i))->value(); | 
| +      WeakCell* cell = WeakCell::cast(detached_contexts->get(i + 1)); | 
| +      if (mark_sweeps > 3) { | 
| +        PrintF("detached context 0x%p\n survived %d GCs (leak?)\n", | 
| +               static_cast<void*>(cell->value()), mark_sweeps); | 
| +      } | 
| } | 
| } | 
| -  if (length == new_length) { | 
| +  if (new_length == 0) { | 
| heap()->set_detached_contexts(heap()->empty_fixed_array()); | 
| -  } else { | 
| +  } else if (new_length < length) { | 
| heap()->RightTrimFixedArray<Heap::FROM_GC>(*detached_contexts, | 
| length - new_length); | 
| } | 
|  |