| Index: src/heap/mark-compact.cc
 | 
| diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
 | 
| index 521be78e2eff9976cd0db5d49e27ca5888c958db..5da3a1fc5b4234806fe97cecf7a38f56de7d857b 100644
 | 
| --- a/src/heap/mark-compact.cc
 | 
| +++ b/src/heap/mark-compact.cc
 | 
| @@ -1679,13 +1679,20 @@ class StringTableCleaner : public ObjectVisitor {
 | 
|        if (o->IsHeapObject() &&
 | 
|            Marking::IsWhite(Marking::MarkBitFrom(HeapObject::cast(o)))) {
 | 
|          if (finalize_external_strings) {
 | 
| -          DCHECK(o->IsExternalString());
 | 
| +          // We must never finalize a string that was copied (has a forwarding
 | 
| +          // map).
 | 
| +          CHECK(o->IsExternalString());
 | 
|            heap_->FinalizeExternalString(String::cast(*p));
 | 
|          } else {
 | 
|            pointers_removed_++;
 | 
|          }
 | 
|          // Set the entry to the_hole_value (as deleted).
 | 
|          *p = heap_->the_hole_value();
 | 
| +      } else {
 | 
| +        // Anything in the external string table has to be either a string or
 | 
| +        // the hole.
 | 
| +        CHECK(!finalize_external_strings || o->IsExternalString() ||
 | 
| +              o->IsTheHole());
 | 
|        }
 | 
|      }
 | 
|    }
 | 
| 
 |