< prev index next >

src/share/vm/memory/genCollectedHeap.hpp

Print this page
rev 7975 : Move remaining root processing to GenCollectedHeap

*** 83,94 **** // In support of ExplicitGCInvokesConcurrent functionality unsigned int _full_collections_completed; // Data structure for claiming the (potentially) parallel tasks in // (gen-specific) roots processing. ! SubTasksDone* _gen_process_roots_tasks; ! SubTasksDone* gen_process_roots_tasks() { return _gen_process_roots_tasks; } // Collects the given generation. void collect_generation(Generation* gen, bool full, size_t size, bool is_tlab, bool run_verification, bool clear_soft_refs, bool restore_marks_for_biased_locking); --- 83,93 ---- // In support of ExplicitGCInvokesConcurrent functionality unsigned int _full_collections_completed; // Data structure for claiming the (potentially) parallel tasks in // (gen-specific) roots processing. ! SubTasksDone* _process_strong_tasks; // Collects the given generation. void collect_generation(Generation* gen, bool full, size_t size, bool is_tlab, bool run_verification, bool clear_soft_refs, bool restore_marks_for_biased_locking);
*** 406,415 **** --- 405,415 ---- // Convenience function to be used in situations where the heap type can be // asserted to be this type. static GenCollectedHeap* heap(); void set_par_threads(uint t); + void set_n_termination(uint t); // Invoke the "do_oop" method of one of the closures "not_older_gens" // or "older_gens" on root locations for the generation at // "level". (The "older_gens" closure is used for scanning references // from older generations; "not_older_gens" is used everywhere else.)
*** 419,433 **** // 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; private: void gen_process_roots(int level, bool younger_gens_as_roots, bool activate_scope, ! SharedHeap::ScanningOption so, OopsInGenClosure* not_older_gens, OopsInGenClosure* weak_roots, OopsInGenClosure* older_gens, CLDClosure* cld_closure, CLDClosure* weak_cld_closure, --- 419,447 ---- // 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; + enum ScanningOption { + SO_None = 0x0, + SO_AllCodeCache = 0x8, + SO_ScavengeCodeCache = 0x10 + }; + private: + void process_roots(bool activate_scope, + ScanningOption so, + OopClosure* strong_roots, + OopClosure* weak_roots, + CLDClosure* strong_cld_closure, + CLDClosure* weak_cld_closure, + CodeBlobClosure* code_roots); + void gen_process_roots(int level, bool younger_gens_as_roots, bool activate_scope, ! ScanningOption so, OopsInGenClosure* not_older_gens, OopsInGenClosure* weak_roots, OopsInGenClosure* older_gens, CLDClosure* cld_closure, CLDClosure* weak_cld_closure,
*** 438,448 **** 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); --- 452,462 ---- static const bool StrongRootsOnly = true; void gen_process_roots(int level, bool younger_gens_as_roots, bool activate_scope, ! ScanningOption so, bool only_strong_roots, OopsInGenClosure* not_older_gens, OopsInGenClosure* older_gens, CLDClosure* cld_closure);
< prev index next >