< prev index next >
src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp
Print this page
@@ -39,10 +39,11 @@
#include "gc/parallel/psScavenge.hpp"
#include "gc/parallel/psVMOperations.hpp"
#include "gc/shared/gcHeapSummary.hpp"
#include "gc/shared/gcLocker.hpp"
#include "gc/shared/gcWhen.hpp"
+#include "gc/shared/scavengableNMethods.hpp"
#include "logging/log.hpp"
#include "memory/metaspaceCounters.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/java.hpp"
@@ -148,20 +149,33 @@
_young_manager->add_pool(_eden_pool);
_young_manager->add_pool(_survivor_pool);
}
+namespace {
+ class PSIsScavengable : public BoolObjectClosure {
+ bool do_object_b(oop obj) {
+ return ParallelScavengeHeap::heap()->is_in_young(obj);
+ }
+ };
+
+ PSIsScavengable _is_scavengable;
+}
+
+
void ParallelScavengeHeap::post_initialize() {
CollectedHeap::post_initialize();
// Need to init the tenuring threshold
PSScavenge::initialize();
if (UseParallelOldGC) {
PSParallelCompact::post_initialize();
} else {
PSMarkSweepProxy::initialize();
}
PSPromotionManager::initialize();
+
+ ScavengableNMethods::initialize(&_is_scavengable);
}
void ParallelScavengeHeap::update_counters() {
young_gen()->update_counters();
old_gen()->update_counters();
@@ -695,20 +709,28 @@
old_gen()->object_space()->mangle_unused_area();
}
}
#endif
-bool ParallelScavengeHeap::is_scavengable(oop obj) {
- return is_in_young(obj);
+void ParallelScavengeHeap::register_nmethod(nmethod* nm) {
+ ScavengableNMethods::register_nmethod(nm);
}
-void ParallelScavengeHeap::register_nmethod(nmethod* nm) {
- CodeCache::register_scavenge_root_nmethod(nm);
+void ParallelScavengeHeap::unregister_nmethod(nmethod* nm) {
+ ScavengableNMethods::unregister_nmethod(nm);
}
void ParallelScavengeHeap::verify_nmethod(nmethod* nm) {
- CodeCache::verify_scavenge_root_nmethod(nm);
+ ScavengableNMethods::verify_nmethod(nm);
+}
+
+void ParallelScavengeHeap::flush_nmethod(nmethod* nm) {
+ ScavengableNMethods::flush_nmethod(nm);
+}
+
+void ParallelScavengeHeap::prune_nmethods() {
+ ScavengableNMethods::prune_nmethods();
}
GrowableArray<GCMemoryManager*> ParallelScavengeHeap::memory_managers() {
GrowableArray<GCMemoryManager*> memory_managers(2);
memory_managers.append(_young_manager);
< prev index next >