src/share/vm/memory/genCollectedHeap.hpp
Print this page
@@ -76,13 +76,13 @@
// In support of ExplicitGCInvokesConcurrent functionality
unsigned int _full_collections_completed;
// Data structure for claiming the (potentially) parallel tasks in
- // (gen-specific) strong roots processing.
- SubTasksDone* _gen_process_strong_tasks;
- SubTasksDone* gen_process_strong_tasks() { return _gen_process_strong_tasks; }
+ // (gen-specific) roots processing.
+ SubTasksDone* _gen_process_roots_tasks;
+ SubTasksDone* gen_process_roots_tasks() { return _gen_process_roots_tasks; }
// In block contents verification, the number of header words to skip
NOT_PRODUCT(static size_t _skip_header_HeapWords;)
protected:
@@ -401,22 +401,34 @@
// explicitly mark reachable objects in younger generations, to avoid
// excess storage retention.)
// The "so" argument determines which of the roots
// the closure is applied to:
// "SO_None" does none;
- // "SO_AllClasses" applies the closure to all entries in the SystemDictionary;
- // "SO_SystemClasses" to all the "system" classes and loaders;
- // "SO_Strings" applies the closure to all entries in the StringTable.
- void gen_process_strong_roots(int level,
+ private:
+ void gen_process_roots(int level,
bool younger_gens_as_roots,
- // The remaining arguments are in an order
- // consistent with SharedHeap::process_strong_roots:
bool activate_scope,
SharedHeap::ScanningOption so,
OopsInGenClosure* not_older_gens,
+ OopsInGenClosure* weak_roots,
OopsInGenClosure* older_gens,
- KlassClosure* klass_closure);
+ CLDClosure* cld_closure,
+ CLDClosure* weak_cld_closure,
+ CodeBlobClosure* code_closure);
+
+ public:
+ static const bool StrongAndWeakRoots = false;
+ static const bool StrongRootsOnly = true;
+
+ void gen_process_roots(int level,
+ bool younger_gens_as_roots,
+ bool activate_scope,
+ SharedHeap::ScanningOption so,
+ bool only_strong_roots,
+ OopsInGenClosure* not_older_gens,
+ OopsInGenClosure* older_gens,
+ CLDClosure* cld_closure);
// Apply "root_closure" to all the weak roots of the system.
// These include JNI weak roots, string table,
// and referents of reachable weak refs.
void gen_process_weak_roots(OopClosure* root_closure);