comparison src/share/vm/memory/genMarkSweep.cpp @ 20278:2c6ef90f030a

8049421: G1 Class Unloading after completing a concurrent mark cycle Reviewed-by: tschatzl, ehelin, brutisso, coleenp, roland, iveresov Contributed-by: stefan.karlsson@oracle.com, mikael.gerdin@oracle.com
author stefank
date Mon, 07 Jul 2014 10:12:40 +0200
parents 64ac9c55d666
children 7848fc12602b 38d6febe66af
comparison
equal deleted inserted replaced
20277:882004b9e7e1 20278:2c6ef90f030a
205 follow_root_closure.set_orig_generation(gch->get_gen(level)); 205 follow_root_closure.set_orig_generation(gch->get_gen(level));
206 206
207 // Need new claim bits before marking starts. 207 // Need new claim bits before marking starts.
208 ClassLoaderDataGraph::clear_claimed_marks(); 208 ClassLoaderDataGraph::clear_claimed_marks();
209 209
210 gch->gen_process_strong_roots(level, 210 gch->gen_process_roots(level,
211 false, // Younger gens are not roots. 211 false, // Younger gens are not roots.
212 true, // activate StrongRootsScope 212 true, // activate StrongRootsScope
213 SharedHeap::SO_SystemClasses, 213 SharedHeap::SO_None,
214 &follow_root_closure, 214 GenCollectedHeap::StrongRootsOnly,
215 &follow_root_closure, 215 &follow_root_closure,
216 &follow_klass_closure); 216 &follow_root_closure,
217 &follow_cld_closure);
217 218
218 // Process reference objects found during marking 219 // Process reference objects found during marking
219 { 220 {
220 ref_processor()->setup_policy(clear_all_softrefs); 221 ref_processor()->setup_policy(clear_all_softrefs);
221 const ReferenceProcessorStats& stats = 222 const ReferenceProcessorStats& stats =
289 // use OopsInGenClosure constructor which takes a generation, 290 // use OopsInGenClosure constructor which takes a generation,
290 // as the Universe has not been created when the static constructors 291 // as the Universe has not been created when the static constructors
291 // are run. 292 // are run.
292 adjust_pointer_closure.set_orig_generation(gch->get_gen(level)); 293 adjust_pointer_closure.set_orig_generation(gch->get_gen(level));
293 294
294 gch->gen_process_strong_roots(level, 295 gch->gen_process_roots(level,
295 false, // Younger gens are not roots. 296 false, // Younger gens are not roots.
296 true, // activate StrongRootsScope 297 true, // activate StrongRootsScope
297 SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_AllCodeCache, 298 SharedHeap::SO_AllCodeCache,
298 &adjust_pointer_closure, 299 GenCollectedHeap::StrongAndWeakRoots,
299 &adjust_pointer_closure, 300 &adjust_pointer_closure,
300 &adjust_klass_closure); 301 &adjust_pointer_closure,
302 &adjust_cld_closure);
301 303
302 gch->gen_process_weak_roots(&adjust_pointer_closure); 304 gch->gen_process_weak_roots(&adjust_pointer_closure);
303 305
304 adjust_marks(); 306 adjust_marks();
305 GenAdjustPointersClosure blk; 307 GenAdjustPointersClosure blk;