397 // "level". (The "older_gens" closure is used for scanning references
398 // from older generations; "not_older_gens" is used everywhere else.)
399 // If "younger_gens_as_roots" is false, younger generations are
400 // not scanned as roots; in this case, the caller must be arranging to
401 // scan the younger generations itself. (For example, a generation might
402 // explicitly mark reachable objects in younger generations, to avoid
403 // excess storage retention.)
404 // The "so" argument determines which of the roots
405 // the closure is applied to:
406 // "SO_None" does none;
407 // "SO_AllClasses" applies the closure to all entries in the SystemDictionary;
408 // "SO_SystemClasses" to all the "system" classes and loaders;
409 // "SO_Strings" applies the closure to all entries in the StringTable.
410 void gen_process_strong_roots(int level,
411 bool younger_gens_as_roots,
412 // The remaining arguments are in an order
413 // consistent with SharedHeap::process_strong_roots:
414 bool activate_scope,
415 SharedHeap::ScanningOption so,
416 OopsInGenClosure* not_older_gens,
417 bool do_code_roots,
418 OopsInGenClosure* older_gens,
419 KlassClosure* klass_closure);
420
421 // Apply "blk" to all the weak roots of the system. These include
422 // JNI weak roots, the code cache, system dictionary, symbol table,
423 // string table, and referents of reachable weak refs.
424 void gen_process_weak_roots(OopClosure* root_closure,
425 CodeBlobClosure* code_roots);
426
427 // Set the saved marks of generations, if that makes sense.
428 // In particular, if any generation might iterate over the oops
429 // in other generations, it should call this method.
430 void save_marks();
431
432 // Apply "cur->do_oop" or "older->do_oop" to all the oops in objects
433 // allocated since the last call to save_marks in generations at or above
434 // "level". The "cur" closure is
435 // applied to references in the generation at "level", and the "older"
436 // closure to older generations.
437 #define GCH_SINCE_SAVE_MARKS_ITERATE_DECL(OopClosureType, nv_suffix) \
438 void oop_since_save_marks_iterate(int level, \
439 OopClosureType* cur, \
440 OopClosureType* older);
441
442 ALL_SINCE_SAVE_MARKS_CLOSURES(GCH_SINCE_SAVE_MARKS_ITERATE_DECL)
443
444 #undef GCH_SINCE_SAVE_MARKS_ITERATE_DECL
445
|
397 // "level". (The "older_gens" closure is used for scanning references
398 // from older generations; "not_older_gens" is used everywhere else.)
399 // If "younger_gens_as_roots" is false, younger generations are
400 // not scanned as roots; in this case, the caller must be arranging to
401 // scan the younger generations itself. (For example, a generation might
402 // explicitly mark reachable objects in younger generations, to avoid
403 // excess storage retention.)
404 // The "so" argument determines which of the roots
405 // the closure is applied to:
406 // "SO_None" does none;
407 // "SO_AllClasses" applies the closure to all entries in the SystemDictionary;
408 // "SO_SystemClasses" to all the "system" classes and loaders;
409 // "SO_Strings" applies the closure to all entries in the StringTable.
410 void gen_process_strong_roots(int level,
411 bool younger_gens_as_roots,
412 // The remaining arguments are in an order
413 // consistent with SharedHeap::process_strong_roots:
414 bool activate_scope,
415 SharedHeap::ScanningOption so,
416 OopsInGenClosure* not_older_gens,
417 OopsInGenClosure* older_gens,
418 KlassClosure* klass_closure);
419
420 // Apply "root_closure" to all the weak roots of the system.
421 // These include JNI weak roots, string table,
422 // and referents of reachable weak refs.
423 void gen_process_weak_roots(OopClosure* root_closure);
424
425 // Set the saved marks of generations, if that makes sense.
426 // In particular, if any generation might iterate over the oops
427 // in other generations, it should call this method.
428 void save_marks();
429
430 // Apply "cur->do_oop" or "older->do_oop" to all the oops in objects
431 // allocated since the last call to save_marks in generations at or above
432 // "level". The "cur" closure is
433 // applied to references in the generation at "level", and the "older"
434 // closure to older generations.
435 #define GCH_SINCE_SAVE_MARKS_ITERATE_DECL(OopClosureType, nv_suffix) \
436 void oop_since_save_marks_iterate(int level, \
437 OopClosureType* cur, \
438 OopClosureType* older);
439
440 ALL_SINCE_SAVE_MARKS_CLOSURES(GCH_SINCE_SAVE_MARKS_ITERATE_DECL)
441
442 #undef GCH_SINCE_SAVE_MARKS_ITERATE_DECL
443
|