src/share/vm/memory/genCollectedHeap.hpp

Print this page
rev 5891 : [mq]: hideDoCodeRoots


 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