# HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID e4099317aaf003ecf88851fd309e3a2922eec028 # Parent a8704a006c3998691641e80c6a6d8085720bd8b3 imported patch remove_SharedHeap_gcprologue diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -630,8 +630,8 @@ inline AllocationContextStats& allocation_context_stats(); // Do anything common to GC's. - virtual void gc_prologue(bool full); - virtual void gc_epilogue(bool full); + void gc_prologue(bool full); + void gc_epilogue(bool full); inline void set_humongous_is_live(oop obj); diff --git a/src/share/vm/memory/genCollectedHeap.hpp b/src/share/vm/memory/genCollectedHeap.hpp --- a/src/share/vm/memory/genCollectedHeap.hpp +++ b/src/share/vm/memory/genCollectedHeap.hpp @@ -531,8 +531,8 @@ void record_gen_tops_before_GC() PRODUCT_RETURN; protected: - virtual void gc_prologue(bool full); - virtual void gc_epilogue(bool full); + void gc_prologue(bool full); + void gc_epilogue(bool full); }; #endif // SHARE_VM_MEMORY_GENCOLLECTEDHEAP_HPP diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -185,11 +185,6 @@ // functions. public: - - // Do anything common to GC's. - virtual void gc_prologue(bool full) = 0; - virtual void gc_epilogue(bool full) = 0; - // Sets the number of parallel threads that will be doing tasks // (such as process roots) subsequently. virtual void set_par_threads(uint t); # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 8302bc589feb5721c18e85f755656cdf6426524f # Parent e4099317aaf003ecf88851fd309e3a2922eec028 imported patch remove_SharedHeap_set_barrier_set diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -1854,7 +1854,8 @@ = new G1SATBCardTableLoggingModRefBS(reserved_region()); bs->initialize(); assert(bs->is_a(BarrierSet::G1SATBCTLogging), "sanity"); - set_barrier_set(bs); + _barrier_set = bs; + oopDesc::set_bs(bs); // Also create a G1 rem set. _g1_rem_set = new G1RemSet(this, g1_barrier_set()); diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -118,7 +118,8 @@ initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size())); _rem_set = collector_policy()->create_rem_set(reserved_region()); - set_barrier_set(rem_set()->bs()); + _barrier_set = rem_set()->bs(); + oopDesc::set_bs(_barrier_set); _gch = this; diff --git a/src/share/vm/memory/sharedHeap.cpp b/src/share/vm/memory/sharedHeap.cpp --- a/src/share/vm/memory/sharedHeap.cpp +++ b/src/share/vm/memory/sharedHeap.cpp @@ -70,12 +70,6 @@ Threads::assert_all_threads_claimed(); } -void SharedHeap::set_barrier_set(BarrierSet* bs) { - _barrier_set = bs; - // Cached barrier set for fast access in oops - oopDesc::set_bs(bs); -} - void SharedHeap::post_initialize() { CollectedHeap::post_initialize(); ref_processing_init(); diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -113,8 +113,6 @@ SharedHeap(); public: - void set_barrier_set(BarrierSet* bs); - // Does operations required after initialization has been done. virtual void post_initialize(); # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID ec62b08cc2d534ab9d7abe8b88b0b669a610ecf3 # Parent 8302bc589feb5721c18e85f755656cdf6426524f imported patch remove_SharedHeap_set_barrier_set-stefank diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -1854,8 +1854,7 @@ = new G1SATBCardTableLoggingModRefBS(reserved_region()); bs->initialize(); assert(bs->is_a(BarrierSet::G1SATBCTLogging), "sanity"); - _barrier_set = bs; - oopDesc::set_bs(bs); + set_barrier_set(bs); // Also create a G1 rem set. _g1_rem_set = new G1RemSet(this, g1_barrier_set()); diff --git a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp --- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp +++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp @@ -78,13 +78,7 @@ CardTableExtension* const barrier_set = new CardTableExtension(reserved_region()); barrier_set->initialize(); - _barrier_set = barrier_set; - oopDesc::set_bs(_barrier_set); - if (_barrier_set == NULL) { - vm_shutdown_during_initialization( - "Could not reserve enough space for barrier set"); - return JNI_ENOMEM; - } + set_barrier_set(barrier_set); // Make up the generations // Calculate the maximum size that a generation can grow. This diff --git a/src/share/vm/gc_interface/collectedHeap.cpp b/src/share/vm/gc_interface/collectedHeap.cpp --- a/src/share/vm/gc_interface/collectedHeap.cpp +++ b/src/share/vm/gc_interface/collectedHeap.cpp @@ -220,6 +220,11 @@ } } +void CollectedHeap::set_barrier_set(BarrierSet* barrier_set) { + _barrier_set = barrier_set; + oopDesc::set_bs(_barrier_set); +} + void CollectedHeap::pre_initialize() { // Used for ReduceInitialCardMarks (when COMPILER2 is used); // otherwise remains unused. diff --git a/src/share/vm/gc_interface/collectedHeap.hpp b/src/share/vm/gc_interface/collectedHeap.hpp --- a/src/share/vm/gc_interface/collectedHeap.hpp +++ b/src/share/vm/gc_interface/collectedHeap.hpp @@ -470,6 +470,7 @@ // Returns the barrier set for this heap BarrierSet* barrier_set() { return _barrier_set; } + void set_barrier_set(BarrierSet* barrier_set); // Returns "true" iff there is a stop-world GC in progress. (I assume // that it should answer "false" for the concurrent part of a concurrent diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -118,8 +118,7 @@ initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size())); _rem_set = collector_policy()->create_rem_set(reserved_region()); - _barrier_set = rem_set()->bs(); - oopDesc::set_bs(_barrier_set); + set_barrier_set(rem_set()->bs()); _gch = this; # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 0f77a44f631c698b849cf597342d1b03c9017a84 # Parent ec62b08cc2d534ab9d7abe8b88b0b669a610ecf3 imported patch move_post_initialized_and_ref_init diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -2035,6 +2035,11 @@ return HeapRegion::max_region_size(); } +void G1CollectedHeap::post_initialize() { + CollectedHeap::post_initialize(); + ref_processing_init(); +} + void G1CollectedHeap::ref_processing_init() { // Reference processing in G1 currently works as follows: // @@ -2071,7 +2076,6 @@ // * Discovery is atomic - i.e. not concurrent. // * Reference discovery will not need a barrier. - SharedHeap::ref_processing_init(); MemRegion mr = reserved_region(); // Concurrent Mark ref processor diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1000,6 +1000,9 @@ // Return the (conservative) maximum heap alignment for any G1 heap static size_t conservative_max_heap_alignment(); + // Does operations required after initialization has been done. + void post_initialize(); + // Initialize weak reference processing. virtual void ref_processing_init(); diff --git a/src/share/vm/gc_interface/collectedHeap.hpp b/src/share/vm/gc_interface/collectedHeap.hpp --- a/src/share/vm/gc_interface/collectedHeap.hpp +++ b/src/share/vm/gc_interface/collectedHeap.hpp @@ -205,7 +205,7 @@ // In many heaps, there will be a need to perform some initialization activities // after the Universe is fully formed, but before general heap allocation is allowed. // This is the correct place to place such initialization methods. - virtual void post_initialize() = 0; + virtual void post_initialize(); // Stop any onging concurrent work and prepare for exit. virtual void stop() {} diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -166,7 +166,8 @@ } void GenCollectedHeap::post_initialize() { - SharedHeap::post_initialize(); + CollectedHeap::post_initialize(); + ref_processing_init(); GenCollectorPolicy *policy = (GenCollectorPolicy *)collector_policy(); guarantee(policy->is_generation_policy(), "Illegal policy type"); assert((_young_gen->kind() == Generation::DefNew) || @@ -185,7 +186,6 @@ } void GenCollectedHeap::ref_processing_init() { - SharedHeap::ref_processing_init(); _young_gen->ref_processor_init(); _old_gen->ref_processor_init(); } diff --git a/src/share/vm/memory/sharedHeap.cpp b/src/share/vm/memory/sharedHeap.cpp --- a/src/share/vm/memory/sharedHeap.cpp +++ b/src/share/vm/memory/sharedHeap.cpp @@ -69,10 +69,3 @@ SharedHeap::StrongRootsScope::~StrongRootsScope() { Threads::assert_all_threads_claimed(); } - -void SharedHeap::post_initialize() { - CollectedHeap::post_initialize(); - ref_processing_init(); -} - -void SharedHeap::ref_processing_init() {} diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -113,12 +113,6 @@ SharedHeap(); public: - // Does operations required after initialization has been done. - virtual void post_initialize(); - - // Initialization of ("weak") reference processing support - virtual void ref_processing_init(); - // Iteration functions. void oop_iterate(ExtendedOopClosure* cl) = 0; # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 46389a22f41192c7170d45a178e46063ac6d1753 # Parent 0f77a44f631c698b849cf597342d1b03c9017a84 imported patch move_post_initialized_and_ref_init-stefank diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1004,7 +1004,7 @@ void post_initialize(); // Initialize weak reference processing. - virtual void ref_processing_init(); + void ref_processing_init(); // Explicitly import set_par_threads into this scope using SharedHeap::set_par_threads; # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID cb9dbb589aa9ed3cf11b98e74e4532de716ce625 # Parent 46389a22f41192c7170d45a178e46063ac6d1753 imported patch remove_SharedHeap_no_gc_in_progress diff --git a/src/share/vm/memory/genCollectedHeap.hpp b/src/share/vm/memory/genCollectedHeap.hpp --- a/src/share/vm/memory/genCollectedHeap.hpp +++ b/src/share/vm/memory/genCollectedHeap.hpp @@ -331,7 +331,6 @@ _old_gen->update_gc_stats(current_level, full); } - // Override. bool no_gc_in_progress() { return !is_gc_active(); } // Override. diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -124,8 +124,6 @@ // NULL. virtual Space* space_containing(const void* addr) const = 0; - bool no_gc_in_progress() { return !is_gc_active(); } - // Note, the below comment needs to be updated to reflect the changes // introduced by JDK-8076225. This should be done as part of JDK-8076289. // # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID d1225788c23269c0b1f3d78ee842745c98653887 # Parent cb9dbb589aa9ed3cf11b98e74e4532de716ce625 imported patch remove_SharedHeap_space_iterate diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -2503,11 +2503,6 @@ } }; -void G1CollectedHeap::space_iterate(SpaceClosure* cl) { - SpaceClosureRegionClosure blk(cl); - heap_region_iterate(&blk); -} - void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const { _hrm.iterate(cl); } diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1265,9 +1265,6 @@ object_iterate(cl); } - // Iterate over all spaces in use in the heap, in ascending address order. - virtual void space_iterate(SpaceClosure* cl); - // Iterate over heap regions, in address order, terminating the // iteration early if the "doHeapRegion" method returns "true". void heap_region_iterate(HeapRegionClosure* blk) const; diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -1093,11 +1093,6 @@ } } -void GenCollectedHeap::space_iterate(SpaceClosure* cl) { - _young_gen->space_iterate(cl, true); - _old_gen->space_iterate(cl, true); -} - bool GenCollectedHeap::is_maximal_no_gc() const { return _young_gen->is_maximal_no_gc() && _old_gen->is_maximal_no_gc(); } diff --git a/src/share/vm/memory/genCollectedHeap.hpp b/src/share/vm/memory/genCollectedHeap.hpp --- a/src/share/vm/memory/genCollectedHeap.hpp +++ b/src/share/vm/memory/genCollectedHeap.hpp @@ -362,8 +362,6 @@ // If "old_to_young" determines the order. void generation_iterate(GenClosure* cl, bool old_to_young); - void space_iterate(SpaceClosure* cl); - // Return "true" if all generations have reached the // maximal committed limit that they can reach, without a garbage // collection. diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -116,9 +116,6 @@ // Iteration functions. void oop_iterate(ExtendedOopClosure* cl) = 0; - // Iterate over all spaces in use in the heap, in an undefined order. - virtual void space_iterate(SpaceClosure* cl) = 0; - // A SharedHeap will contain some number of spaces. This finds the // space whose reserved area contains the given address, or else returns // NULL. # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 456c001ff1c74833bb83495435bf7d948157d83e # Parent d1225788c23269c0b1f3d78ee842745c98653887 imported patch remove_SharedHeap_space_iterate-stefank diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -2491,18 +2491,6 @@ heap_region_iterate(&blk); } -// Calls a SpaceClosure on a HeapRegion. - -class SpaceClosureRegionClosure: public HeapRegionClosure { - SpaceClosure* _cl; -public: - SpaceClosureRegionClosure(SpaceClosure* cl) : _cl(cl) {} - bool doHeapRegion(HeapRegion* r) { - _cl->do_space(r); - return false; - } -}; - void G1CollectedHeap::heap_region_iterate(HeapRegionClosure* cl) const { _hrm.iterate(cl); } # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID de529d055483817d80cfd8eccd63ca7c27de67a7 # Parent 456c001ff1c74833bb83495435bf7d948157d83e imported patch remove_SharedHeap_oop_iterate diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -113,9 +113,6 @@ SharedHeap(); public: - // Iteration functions. - void oop_iterate(ExtendedOopClosure* cl) = 0; - // A SharedHeap will contain some number of spaces. This finds the // space whose reserved area contains the given address, or else returns // NULL. # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 0d7c236df2162667d64a395d20eba2c0455477e8 # Parent de529d055483817d80cfd8eccd63ca7c27de67a7 imported patch remove_SharedHeap_oop_iterate-stefank diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp --- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp @@ -2442,11 +2442,10 @@ { VerifyAllOopsClosure cl(_collector, this, span, past_remark, _collector->markBitMap()); - CollectedHeap* ch = Universe::heap(); // Iterate over all oops in the heap. Uses the _no_header version // since we are not interested in following the klass pointers. - ch->oop_iterate_no_header(&cl); + GenCollectedHeap::heap()->oop_iterate_no_header(&cl); } if (VerifyObjectStartArray) { diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -2467,11 +2467,6 @@ } }; -void G1CollectedHeap::oop_iterate(ExtendedOopClosure* cl) { - IterateOopClosureRegionClosure blk(cl); - heap_region_iterate(&blk); -} - // Iterates an ObjectClosure over all objects within a HeapRegion. class IterateObjectClosureRegionClosure: public HeapRegionClosure { diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1254,10 +1254,6 @@ // Iteration functions. - // Iterate over all the ref-containing fields of all objects, calling - // "cl.do_oop" on each. - virtual void oop_iterate(ExtendedOopClosure* cl); - // Iterate over all objects, calling "cl.do_object" on each. virtual void object_iterate(ObjectClosure* cl); diff --git a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp --- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp +++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp @@ -516,10 +516,6 @@ VMThread::execute(&op); } -void ParallelScavengeHeap::oop_iterate(ExtendedOopClosure* cl) { - Unimplemented(); -} - void ParallelScavengeHeap::object_iterate(ObjectClosure* cl) { young_gen()->object_iterate(cl); old_gen()->object_iterate(cl); diff --git a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp --- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp +++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp @@ -201,7 +201,6 @@ // initializing stores to an object at this address. virtual bool can_elide_initializing_store_barrier(oop new_obj); - void oop_iterate(ExtendedOopClosure* cl); void object_iterate(ObjectClosure* cl); void safe_object_iterate(ObjectClosure* cl) { object_iterate(cl); } diff --git a/src/share/vm/gc_interface/collectedHeap.hpp b/src/share/vm/gc_interface/collectedHeap.hpp --- a/src/share/vm/gc_interface/collectedHeap.hpp +++ b/src/share/vm/gc_interface/collectedHeap.hpp @@ -498,12 +498,6 @@ // Return the CollectorPolicy for the heap virtual CollectorPolicy* collector_policy() const = 0; - void oop_iterate_no_header(OopClosure* cl); - - // Iterate over all the ref-containing fields of all objects, calling - // "cl.do_oop" on each. - virtual void oop_iterate(ExtendedOopClosure* cl) = 0; - // Iterate over all objects, calling "cl.do_object" on each. virtual void object_iterate(ObjectClosure* cl) = 0; diff --git a/src/share/vm/gc_interface/collectedHeap.inline.hpp b/src/share/vm/gc_interface/collectedHeap.inline.hpp --- a/src/share/vm/gc_interface/collectedHeap.inline.hpp +++ b/src/share/vm/gc_interface/collectedHeap.inline.hpp @@ -236,12 +236,6 @@ return (oop)obj; } -inline void CollectedHeap::oop_iterate_no_header(OopClosure* cl) { - NoHeaderExtendedOopClosure no_header_cl(cl); - oop_iterate(&no_header_cl); -} - - inline HeapWord* CollectedHeap::align_allocation_or_fail(HeapWord* addr, HeapWord* end, unsigned short alignment_in_bytes) { diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -924,6 +924,11 @@ } #endif +void GenCollectedHeap::oop_iterate_no_header(OopClosure* cl) { + NoHeaderExtendedOopClosure no_header_cl(cl); + oop_iterate(&no_header_cl); +} + void GenCollectedHeap::oop_iterate(ExtendedOopClosure* cl) { _young_gen->oop_iterate(cl); _old_gen->oop_iterate(cl); diff --git a/src/share/vm/memory/genCollectedHeap.hpp b/src/share/vm/memory/genCollectedHeap.hpp --- a/src/share/vm/memory/genCollectedHeap.hpp +++ b/src/share/vm/memory/genCollectedHeap.hpp @@ -223,6 +223,7 @@ } // Iteration functions. + void oop_iterate_no_header(OopClosure* cl); void oop_iterate(ExtendedOopClosure* cl); void object_iterate(ObjectClosure* cl); void safe_object_iterate(ObjectClosure* cl); # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID a32d6580a3b9adef1190de788469fb787e28b688 # Parent 0d7c236df2162667d64a395d20eba2c0455477e8 imported patch remove_SharedHeap_space_containing diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1305,7 +1305,7 @@ // A CollectedHeap will contain some number of spaces. This finds the // space containing a given address, or else returns NULL. - virtual Space* space_containing(const void* addr) const; + Space* space_containing(const void* addr) const; // Returns the HeapRegion that contains addr. addr must not be NULL. template diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -113,11 +113,6 @@ SharedHeap(); public: - // A SharedHeap will contain some number of spaces. This finds the - // space whose reserved area contains the given address, or else returns - // NULL. - virtual Space* space_containing(const void* addr) const = 0; - // Note, the below comment needs to be updated to reflect the changes // introduced by JDK-8076225. This should be done as part of JDK-8076289. // # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 027723d82241302e6334466f364b8f5fc020c8b1 # Parent a32d6580a3b9adef1190de788469fb787e28b688 imported patch remove_SharedHeap_space_containing-stefank diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -2622,23 +2622,19 @@ return result; } -Space* G1CollectedHeap::space_containing(const void* addr) const { - return heap_region_containing(addr); -} - HeapWord* G1CollectedHeap::block_start(const void* addr) const { - Space* sp = space_containing(addr); - return sp->block_start(addr); + HeapRegion* hr = heap_region_containing(addr); + return hr->block_start(addr); } size_t G1CollectedHeap::block_size(const HeapWord* addr) const { - Space* sp = space_containing(addr); - return sp->block_size(addr); + HeapRegion* hr = heap_region_containing(addr); + return hr->block_size(addr); } bool G1CollectedHeap::block_is_obj(const HeapWord* addr) const { - Space* sp = space_containing(addr); - return sp->block_is_obj(addr); + HeapRegion* hr = heap_region_containing(addr); + return hr->block_is_obj(addr); } bool G1CollectedHeap::supports_tlab_allocation() const { diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -1303,10 +1303,6 @@ HeapRegion* next_compaction_region(const HeapRegion* from) const; - // A CollectedHeap will contain some number of spaces. This finds the - // space containing a given address, or else returns NULL. - Space* space_containing(const void* addr) const; - // Returns the HeapRegion that contains addr. addr must not be NULL. template inline HeapRegion* heap_region_containing_raw(const T addr) const; # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID e8a0b4c9976b310491194ac8f40de6027e109887 # Parent 027723d82241302e6334466f364b8f5fc020c8b1 imported patch cleanup_includes_and_friends diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -26,26 +26,13 @@ #define SHARE_VM_MEMORY_SHAREDHEAP_HPP #include "gc_interface/collectedHeap.hpp" -#include "memory/generation.hpp" // A "SharedHeap" is an implementation of a java heap for HotSpot. This // is an abstract class: there may be many different kinds of heaps. This // class defines the functions that a heap must implement, and contains // infrastructure common to all heaps. -class Generation; -class BarrierSet; -class GenRemSet; -class Space; -class SpaceClosure; -class OopClosure; -class OopsInGenClosure; -class ObjectClosure; -class SubTasksDone; -class WorkGang; class FlexibleWorkGang; -class CollectorPolicy; -class KlassClosure; // Note on use of FlexibleWorkGang's for GC. // There are three places where task completion is determined. @@ -101,9 +88,6 @@ class SharedHeap : public CollectedHeap { friend class VMStructs; - friend class VM_GC_Operation; - friend class VM_CGC_Operation; - protected: // If we're doing parallel GC, use this gang of threads. FlexibleWorkGang* _workers; # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 778a310799aab5f52c05ade869791c86e4314844 # Parent e8a0b4c9976b310491194ac8f40de6027e109887 imported patch remove_SharedHeap_set_par_threads diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -560,7 +560,8 @@ } void GenCollectedHeap::set_par_threads(uint t) { - SharedHeap::set_par_threads(t); + assert(t == 0 || !UseSerialGC, "Cannot have parallel threads"); + CollectedHeap::set_par_threads(t); set_n_termination(t); } diff --git a/src/share/vm/memory/sharedHeap.cpp b/src/share/vm/memory/sharedHeap.cpp --- a/src/share/vm/memory/sharedHeap.cpp +++ b/src/share/vm/memory/sharedHeap.cpp @@ -51,11 +51,6 @@ } } -void SharedHeap::set_par_threads(uint t) { - assert(t == 0 || !UseSerialGC, "Cannot have parallel threads"); - _n_par_threads = t; -} - SharedHeap::StrongRootsScope::StrongRootsScope(SharedHeap* heap, bool activate) : MarkScope(activate), _sh(heap) { diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -146,11 +146,6 @@ // The functions below are helper functions that a subclass of // "SharedHeap" can use in the implementation of its virtual // functions. - -public: - // Sets the number of parallel threads that will be doing tasks - // (such as process roots) subsequently. - virtual void set_par_threads(uint t); -}; + }; #endif // SHARE_VM_MEMORY_SHAREDHEAP_HPP # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 7290685941234ba7d7564ab358e7f18dab67377f # Parent 778a310799aab5f52c05ade869791c86e4314844 imported patch move_workers diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @@ -1770,6 +1770,11 @@ _g1h = this; + _workers = new FlexibleWorkGang("GC Thread", ParallelGCThreads, + /* are_GC_task_threads */true, + /* are_ConcurrentGC_threads */false); + _workers->initialize_workers(); + _allocator = G1Allocator::create_allocator(_g1h); _humongous_object_threshold_in_words = HeapRegion::GrainWords / 2; diff --git a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @@ -76,6 +76,7 @@ class EvacuationFailedInfo; class nmethod; class Ticks; +class FlexibleWorkGang; typedef OverflowTaskQueue RefToScanQueue; typedef GenericTaskQueueSet RefToScanQueueSet; @@ -204,6 +205,8 @@ // The one and only G1CollectedHeap, so static functions can find it. static G1CollectedHeap* _g1h; + FlexibleWorkGang* _workers; + static size_t _humongous_object_threshold_in_words; // The secondary free list which contains regions that have been @@ -605,6 +608,7 @@ void enqueue_discovered_references(uint no_of_gc_workers); public: + FlexibleWorkGang* workers() const { return _workers; } G1Allocator* allocator() { return _allocator; diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -85,6 +85,14 @@ _full_collections_completed(0) { assert(policy != NULL, "Sanity check"); + if (UseConcMarkSweepGC) { + _workers = new FlexibleWorkGang("GC Thread", ParallelGCThreads, + /* are_GC_task_threads */true, + /* are_ConcurrentGC_threads */false); + _workers->initialize_workers(); + } else { + _workers = NULL; + } } jint GenCollectedHeap::initialize() { diff --git a/src/share/vm/memory/genCollectedHeap.hpp b/src/share/vm/memory/genCollectedHeap.hpp --- a/src/share/vm/memory/genCollectedHeap.hpp +++ b/src/share/vm/memory/genCollectedHeap.hpp @@ -31,6 +31,7 @@ #include "memory/sharedHeap.hpp" class SubTasksDone; +class FlexibleWorkGang; // A "GenCollectedHeap" is a SharedHeap that uses generational // collection. It has two generations, young and old. @@ -93,6 +94,8 @@ // In block contents verification, the number of header words to skip NOT_PRODUCT(static size_t _skip_header_HeapWords;) + FlexibleWorkGang* _workers; + protected: // Helper functions for allocation HeapWord* attempt_allocation(size_t size, @@ -125,6 +128,8 @@ public: GenCollectedHeap(GenCollectorPolicy *policy); + FlexibleWorkGang* workers() const { return _workers; } + GCStats* gc_stats(int level) const; // Returns JNI_OK on success diff --git a/src/share/vm/memory/sharedHeap.cpp b/src/share/vm/memory/sharedHeap.cpp --- a/src/share/vm/memory/sharedHeap.cpp +++ b/src/share/vm/memory/sharedHeap.cpp @@ -36,20 +36,8 @@ #include "utilities/workgroup.hpp" SharedHeap::SharedHeap() : - CollectedHeap(), - _workers(NULL) -{ - if (UseConcMarkSweepGC || UseG1GC) { - _workers = new FlexibleWorkGang("GC Thread", ParallelGCThreads, - /* are_GC_task_threads */true, - /* are_ConcurrentGC_threads */false); - if (_workers == NULL) { - vm_exit_during_initialization("Failed necessary allocation."); - } else { - _workers->initialize_workers(); - } - } -} + CollectedHeap() +{} SharedHeap::StrongRootsScope::StrongRootsScope(SharedHeap* heap, bool activate) : MarkScope(activate), _sh(heap) diff --git a/src/share/vm/memory/sharedHeap.hpp b/src/share/vm/memory/sharedHeap.hpp --- a/src/share/vm/memory/sharedHeap.hpp +++ b/src/share/vm/memory/sharedHeap.hpp @@ -32,8 +32,6 @@ // class defines the functions that a heap must implement, and contains // infrastructure common to all heaps. -class FlexibleWorkGang; - // Note on use of FlexibleWorkGang's for GC. // There are three places where task completion is determined. // In @@ -89,9 +87,6 @@ friend class VMStructs; protected: - // If we're doing parallel GC, use this gang of threads. - FlexibleWorkGang* _workers; - // Full initialization is done in a concrete subtype's "initialize" // function. SharedHeap(); @@ -137,15 +132,6 @@ StrongRootsScope(SharedHeap* heap, bool activate = true); ~StrongRootsScope(); }; - - private: - - public: - FlexibleWorkGang* workers() const { return _workers; } - - // The functions below are helper functions that a subclass of - // "SharedHeap" can use in the implementation of its virtual - // functions. }; #endif // SHARE_VM_MEMORY_SHAREDHEAP_HPP # HG changeset patch # User brutisso # Date 1427981237 -7200 # Thu Apr 02 15:27:17 2015 +0200 # Node ID 20db0ef17a4d0b6015e8fa96f34247d5f37e9447 # Parent 7290685941234ba7d7564ab358e7f18dab67377f imported patch move_workers-stefank diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -91,6 +91,7 @@ /* are_ConcurrentGC_threads */false); _workers->initialize_workers(); } else { + // Serial GC does not use workers _workers = NULL; } } # HG changeset patch # User brutisso # Date 1427981285 -7200 # Thu Apr 02 15:28:05 2015 +0200 # Node ID d3163298661719b07623b8bcbc69a831cbab7e85 # Parent 20db0ef17a4d0b6015e8fa96f34247d5f37e9447 [mq]: stefanj-david diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp --- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp @@ -32,6 +32,7 @@ #include "gc_interface/collectedHeap.inline.hpp" #include "memory/allocation.inline.hpp" #include "memory/blockOffsetTable.inline.hpp" +#include "memory/genCollectedHeap.hpp" #include "memory/resourceArea.hpp" #include "memory/space.inline.hpp" #include "memory/universe.inline.hpp" diff --git a/src/share/vm/memory/cardTableModRefBS.cpp b/src/share/vm/memory/cardTableModRefBS.cpp --- a/src/share/vm/memory/cardTableModRefBS.cpp +++ b/src/share/vm/memory/cardTableModRefBS.cpp @@ -26,6 +26,7 @@ #include "memory/allocation.inline.hpp" #include "memory/cardTableModRefBS.inline.hpp" #include "memory/cardTableRS.hpp" +#include "memory/genCollectedHeap.hpp" #include "memory/sharedHeap.hpp" #include "memory/space.hpp" #include "memory/space.inline.hpp" diff --git a/src/share/vm/memory/genCollectedHeap.cpp b/src/share/vm/memory/genCollectedHeap.cpp --- a/src/share/vm/memory/genCollectedHeap.cpp +++ b/src/share/vm/memory/genCollectedHeap.cpp @@ -91,7 +91,7 @@ /* are_ConcurrentGC_threads */false); _workers->initialize_workers(); } else { - // Serial GC does not use workers + // Serial GC does not use workers. _workers = NULL; } }