Chromium Code Reviews| Index: src/global-handles.cc |
| diff --git a/src/global-handles.cc b/src/global-handles.cc |
| index f5850da04d5b940e46cba8e171bff52e3afeefd3..68eb5785d9f248ee0b94e99410d3d108384d61af 100644 |
| --- a/src/global-handles.cc |
| +++ b/src/global-handles.cc |
| @@ -552,7 +552,7 @@ void GlobalHandles::IterateNewSpaceWeakIndependentRoots(ObjectVisitor* v) { |
| bool GlobalHandles::PostGarbageCollectionProcessing( |
| - GarbageCollector collector) { |
| + GarbageCollector collector, GCTracer* tracer) { |
|
Michael Starzinger
2012/11/16 13:45:51
I am kind of hesitant to let the GCTracer "escape"
haraken
2012/11/19 07:45:43
I think yes. What I am interested in is how many g
|
| // Process weak global handle callbacks. This must be done after the |
| // GC is completely done, because the callbacks may invoke arbitrary |
| // API functions. |
| @@ -602,10 +602,17 @@ 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() && isolate_->heap()->InNewSpace(node->object())) { |
| - new_space_nodes_[last++] = node; |
| + if (node->IsRetainer()) { |
| + if (isolate_->heap()->InNewSpace(node->object())) { |
| + new_space_nodes_[last++] = node; |
| + tracer->increment_copied_nodes_in_new_space(); |
| + } else { |
| + node->set_in_new_space_list(false); |
| + tracer->increment_promoted_nodes(); |
| + } |
| } else { |
| node->set_in_new_space_list(false); |
| + tracer->increment_died_nodes_in_new_space(); |
| } |
| } |
| new_space_nodes_.Rewind(last); |