91 // Process reference objects found during marking.
92 G1FullGCMarker* marker = _collector->marker(0);
93 G1IsAliveClosure is_alive(_collector->mark_bitmap());
94 G1FullKeepAliveClosure keep_alive(marker);
95 ReferenceProcessorPhaseTimes pt(timer, _reference_processor->num_queues());
96 AbstractRefProcTaskExecutor* executor = _reference_processor->processing_is_mt() ? this : NULL;
97
98 // Process discovered references, use this executor if multi-threaded
99 // processing is enabled.
100 const ReferenceProcessorStats& stats =
101 _reference_processor->process_discovered_references(&is_alive,
102 &keep_alive,
103 marker->stack_closure(),
104 executor,
105 &pt);
106
107 tracer->report_gc_reference_stats(stats);
108 pt.print_all_references();
109
110 assert(marker->oop_stack()->is_empty(), "Should be no oops on the stack");
111
112 // Now enqueue the references.
113 _reference_processor->enqueue_discovered_references(executor, &pt);
114 pt.print_enqueue_phase();
115 }
|
91 // Process reference objects found during marking.
92 G1FullGCMarker* marker = _collector->marker(0);
93 G1IsAliveClosure is_alive(_collector->mark_bitmap());
94 G1FullKeepAliveClosure keep_alive(marker);
95 ReferenceProcessorPhaseTimes pt(timer, _reference_processor->num_queues());
96 AbstractRefProcTaskExecutor* executor = _reference_processor->processing_is_mt() ? this : NULL;
97
98 // Process discovered references, use this executor if multi-threaded
99 // processing is enabled.
100 const ReferenceProcessorStats& stats =
101 _reference_processor->process_discovered_references(&is_alive,
102 &keep_alive,
103 marker->stack_closure(),
104 executor,
105 &pt);
106
107 tracer->report_gc_reference_stats(stats);
108 pt.print_all_references();
109
110 assert(marker->oop_stack()->is_empty(), "Should be no oops on the stack");
111 }
|