--- a/hotspot/src/share/vm/memory/genCollectedHeap.cpp Thu Apr 02 10:22:13 2015 +0200
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp Thu Apr 02 16:06:07 2015 +0200
@@ -85,6 +85,15 @@
_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 {
+ // Serial GC does not use workers.
+ _workers = NULL;
+ }
}
jint GenCollectedHeap::initialize() {
@@ -166,7 +175,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 +195,6 @@
}
void GenCollectedHeap::ref_processing_init() {
- SharedHeap::ref_processing_init();
_young_gen->ref_processor_init();
_old_gen->ref_processor_init();
}
@@ -560,7 +569,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);
}
@@ -924,6 +934,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);
@@ -1093,11 +1108,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();
}