216 &is_alive, &keep_alive, &follow_stack_closure, NULL, &pt); |
216 &is_alive, &keep_alive, &follow_stack_closure, NULL, &pt); |
217 pt.print_all_references(); |
217 pt.print_all_references(); |
218 gc_tracer()->report_gc_reference_stats(stats); |
218 gc_tracer()->report_gc_reference_stats(stats); |
219 } |
219 } |
220 |
220 |
221 { |
|
222 GCTraceTime(Debug, gc, phases) tm_m("Weak Processing", gc_timer()); |
|
223 WeakProcessor::weak_oops_do(&is_alive, &keep_alive, &follow_stack_closure); |
|
224 } |
|
225 |
|
226 // This is the point where the entire marking should have completed. |
221 // This is the point where the entire marking should have completed. |
227 assert(_marking_stack.is_empty(), "Marking should have completed"); |
222 assert(_marking_stack.is_empty(), "Marking should have completed"); |
|
223 |
|
224 { |
|
225 GCTraceTime(Debug, gc, phases) tm_m("Weak Processing", gc_timer()); |
|
226 WeakProcessor::weak_oops_do(&is_alive, &do_nothing_cl); |
|
227 } |
228 |
228 |
229 { |
229 { |
230 GCTraceTime(Debug, gc, phases) tm_m("Class Unloading", gc_timer()); |
230 GCTraceTime(Debug, gc, phases) tm_m("Class Unloading", gc_timer()); |
231 |
231 |
232 // Unload classes and purge the SystemDictionary. |
232 // Unload classes and purge the SystemDictionary. |