Chromium Code Reviews| Index: runtime/vm/gc_marker.cc |
| diff --git a/runtime/vm/gc_marker.cc b/runtime/vm/gc_marker.cc |
| index 2c8c9f2fb73a2b3ca036b0790808b1109efa94f0..a8985cfcf9b94134eff59a82a5cb1faba3bf4a25 100644 |
| --- a/runtime/vm/gc_marker.cc |
| +++ b/runtime/vm/gc_marker.cc |
| @@ -197,7 +197,10 @@ class MarkingWeakVisitor : public HandleVisitor { |
| WeakPersistentHandle* handle = |
| reinterpret_cast<WeakPersistentHandle*>(addr); |
| RawObject* raw_obj = handle->raw(); |
| - ASSERT(raw_obj->IsHeapObject()); |
| + if (!raw_obj->IsHeapObject()) { |
| + // Deleted handles are identified by a Smi as the raw object value. |
|
siva
2012/02/15 01:45:07
We could probably do a Clear() in FreeHandle() tha
|
| + return; |
| + } |
| if (!raw_obj->IsMarked() && raw_obj->IsOldObject()) { |
| WeakPersistentHandle::Finalize(handle); |
| } |