76 |
76 |
77 // In support of ExplicitGCInvokesConcurrent functionality |
77 // In support of ExplicitGCInvokesConcurrent functionality |
78 unsigned int _full_collections_completed; |
78 unsigned int _full_collections_completed; |
79 |
79 |
80 // Data structure for claiming the (potentially) parallel tasks in |
80 // Data structure for claiming the (potentially) parallel tasks in |
81 // (gen-specific) strong roots processing. |
81 // (gen-specific) roots processing. |
82 SubTasksDone* _gen_process_strong_tasks; |
82 SubTasksDone* _gen_process_roots_tasks; |
83 SubTasksDone* gen_process_strong_tasks() { return _gen_process_strong_tasks; } |
83 SubTasksDone* gen_process_roots_tasks() { return _gen_process_roots_tasks; } |
84 |
84 |
85 // In block contents verification, the number of header words to skip |
85 // In block contents verification, the number of header words to skip |
86 NOT_PRODUCT(static size_t _skip_header_HeapWords;) |
86 NOT_PRODUCT(static size_t _skip_header_HeapWords;) |
87 |
87 |
88 protected: |
88 protected: |
409 // explicitly mark reachable objects in younger generations, to avoid |
409 // explicitly mark reachable objects in younger generations, to avoid |
410 // excess storage retention.) |
410 // excess storage retention.) |
411 // The "so" argument determines which of the roots |
411 // The "so" argument determines which of the roots |
412 // the closure is applied to: |
412 // the closure is applied to: |
413 // "SO_None" does none; |
413 // "SO_None" does none; |
414 // "SO_AllClasses" applies the closure to all entries in the SystemDictionary; |
414 private: |
415 // "SO_SystemClasses" to all the "system" classes and loaders; |
415 void gen_process_roots(int level, |
416 // "SO_Strings" applies the closure to all entries in the StringTable. |
416 bool younger_gens_as_roots, |
417 void gen_process_strong_roots(int level, |
417 bool activate_scope, |
418 bool younger_gens_as_roots, |
418 SharedHeap::ScanningOption so, |
419 // The remaining arguments are in an order |
419 OopsInGenClosure* not_older_gens, |
420 // consistent with SharedHeap::process_strong_roots: |
420 OopsInGenClosure* weak_roots, |
421 bool activate_scope, |
421 OopsInGenClosure* older_gens, |
422 SharedHeap::ScanningOption so, |
422 CLDClosure* cld_closure, |
423 OopsInGenClosure* not_older_gens, |
423 CLDClosure* weak_cld_closure, |
424 OopsInGenClosure* older_gens, |
424 CodeBlobClosure* code_closure); |
425 KlassClosure* klass_closure); |
425 |
|
426 public: |
|
427 static const bool StrongAndWeakRoots = false; |
|
428 static const bool StrongRootsOnly = true; |
|
429 |
|
430 void gen_process_roots(int level, |
|
431 bool younger_gens_as_roots, |
|
432 bool activate_scope, |
|
433 SharedHeap::ScanningOption so, |
|
434 bool only_strong_roots, |
|
435 OopsInGenClosure* not_older_gens, |
|
436 OopsInGenClosure* older_gens, |
|
437 CLDClosure* cld_closure); |
426 |
438 |
427 // Apply "root_closure" to all the weak roots of the system. |
439 // Apply "root_closure" to all the weak roots of the system. |
428 // These include JNI weak roots, string table, |
440 // These include JNI weak roots, string table, |
429 // and referents of reachable weak refs. |
441 // and referents of reachable weak refs. |
430 void gen_process_weak_roots(OopClosure* root_closure); |
442 void gen_process_weak_roots(OopClosure* root_closure); |