Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index 5605291a7dff5bf55c833a9491955c31313e2f56..278ace0a4fe8962aeda715ee6eecb0dde716f6aa 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -5582,24 +5582,32 @@ DependentCode* Heap::LookupWeakObjectToCodeDependency(Handle<HeapObject> obj) { |
return DependentCode::cast(empty_fixed_array()); |
} |
+namespace { |
+void CompactWeakFixedArray(Object* object) { |
+ if (object->IsWeakFixedArray()) { |
+ WeakFixedArray* array = WeakFixedArray::cast(object); |
+ array->Compact<WeakFixedArray::NullCallback>(); |
+ } |
+} |
+} // anonymous namespace |
+ |
void Heap::CompactWeakFixedArrays() { |
// Find known WeakFixedArrays and compact them. |
- i::HeapIterator iterator(this); |
- for (i::HeapObject* o = iterator.next(); o != NULL; o = iterator.next()) { |
+ HeapIterator iterator(this); |
+ for (HeapObject* o = iterator.next(); o != NULL; o = iterator.next()) { |
if (o->IsPrototypeInfo()) { |
- i::Object* prototype_users = i::PrototypeInfo::cast(o)->prototype_users(); |
+ Object* prototype_users = PrototypeInfo::cast(o)->prototype_users(); |
if (prototype_users->IsWeakFixedArray()) { |
- i::WeakFixedArray* array = i::WeakFixedArray::cast(prototype_users); |
- array->Compact<i::JSObject::PrototypeRegistryCompactionCallback>(); |
+ WeakFixedArray* array = WeakFixedArray::cast(prototype_users); |
+ array->Compact<JSObject::PrototypeRegistryCompactionCallback>(); |
} |
} else if (o->IsScript()) { |
- i::Object* shared_list = i::Script::cast(o)->shared_function_infos(); |
- if (shared_list->IsWeakFixedArray()) { |
- i::WeakFixedArray* array = i::WeakFixedArray::cast(shared_list); |
- array->Compact<i::WeakFixedArray::NullCallback>(); |
- } |
+ CompactWeakFixedArray(Script::cast(o)->shared_function_infos()); |
} |
} |
+ CompactWeakFixedArray(noscript_shared_function_infos()); |
+ CompactWeakFixedArray(script_list()); |
+ CompactWeakFixedArray(weak_stack_trace_list()); |
} |
void Heap::AddRetainedMap(Handle<Map> map) { |