--- old/src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp 2019-03-11 22:56:17.630626589 +0100 +++ new/src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp 2019-03-11 22:56:17.054617249 +0100 @@ -41,6 +41,7 @@ #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" @@ -150,6 +151,17 @@ } +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 @@ -160,6 +172,8 @@ PSMarkSweepProxy::initialize(); } PSPromotionManager::initialize(); + + ScavengableNMethods::initialize(&_is_scavengable); } void ParallelScavengeHeap::update_counters() { @@ -697,16 +711,24 @@ } #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 ParallelScavengeHeap::memory_managers() {