| Index: src/global-handles.cc
|
| diff --git a/src/global-handles.cc b/src/global-handles.cc
|
| index c69b9e27be9209cdaf669b24d91fee2f2c308f12..5c65635d0f9f3c31f747656dee7ef4ac9bcbf20e 100644
|
| --- a/src/global-handles.cc
|
| +++ b/src/global-handles.cc
|
| @@ -634,6 +634,11 @@ bool GlobalHandles::PostGarbageCollectionProcessing(
|
| for (int i = 0; i < new_space_nodes_.length(); ++i) {
|
| Node* node = new_space_nodes_[i];
|
| ASSERT(node->is_in_new_space_list());
|
| + if (!node->IsRetainer()) {
|
| + // Free nodes do not have weak callbacks. Do not use them to compute
|
| + // the next_gc_likely_to_collect_more.
|
| + continue;
|
| + }
|
| // Skip dependent handles. Their weak callbacks might expect to be
|
| // called between two global garbage collection callbacks which
|
| // are not called for minor collections.
|
| @@ -656,6 +661,11 @@ bool GlobalHandles::PostGarbageCollectionProcessing(
|
| }
|
| } else {
|
| for (NodeIterator it(this); !it.done(); it.Advance()) {
|
| + if (!it.node()->IsRetainer()) {
|
| + // Free nodes do not have weak callbacks. Do not use them to compute
|
| + // the next_gc_likely_to_collect_more.
|
| + continue;
|
| + }
|
| it.node()->clear_partially_dependent();
|
| if (it.node()->PostGarbageCollectionProcessing(isolate_)) {
|
| if (initial_post_gc_processing_count != post_gc_processing_count_) {
|
|
|