# HG changeset patch # User stefank # Date 1554136479 -7200 # Node ID 879051d3772a5dc3701121085cf37bba963e664a # Parent 6a4abdb6749cd41a440f99ec83a14ce81b9b7e9a 8220610: Make CollectedHeap nmethod functions pure virtual Reviewed-by: shade diff -r 6a4abdb6749c -r 879051d3772a src/hotspot/share/gc/epsilon/epsilonHeap.hpp --- a/src/hotspot/share/gc/epsilon/epsilonHeap.hpp Mon Apr 01 08:21:45 2019 -0700 +++ b/src/hotspot/share/gc/epsilon/epsilonHeap.hpp Mon Apr 01 18:34:39 2019 +0200 @@ -129,6 +129,12 @@ virtual void print_gc_threads_on(outputStream* st) const {} virtual void gc_threads_do(ThreadClosure* tc) const {} + // No nmethod handling + virtual void register_nmethod(nmethod* nm) {} + virtual void unregister_nmethod(nmethod* nm) {} + virtual void flush_nmethod(nmethod* nm) {} + virtual void verify_nmethod(nmethod* nm) {} + // No heap verification virtual void prepare_for_verify() {} virtual void verify(VerifyOption option) {} diff -r 6a4abdb6749c -r 879051d3772a src/hotspot/share/gc/g1/g1CollectedHeap.hpp --- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp Mon Apr 01 08:21:45 2019 -0700 +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp Mon Apr 01 18:34:39 2019 +0200 @@ -1322,6 +1322,12 @@ // Unregister the given nmethod from the G1 heap. virtual void unregister_nmethod(nmethod* nm); + // No nmethod flushing needed. + virtual void flush_nmethod(nmethod* nm) {} + + // No nmethod verification implemented. + virtual void verify_nmethod(nmethod* nm) {} + // Free up superfluous code root memory. void purge_code_root_memory(); diff -r 6a4abdb6749c -r 879051d3772a src/hotspot/share/gc/shared/collectedHeap.hpp --- a/src/hotspot/share/gc/shared/collectedHeap.hpp Mon Apr 01 08:21:45 2019 -0700 +++ b/src/hotspot/share/gc/shared/collectedHeap.hpp Mon Apr 01 18:34:39 2019 +0200 @@ -510,11 +510,11 @@ void print_heap_after_gc(); // Registering and unregistering an nmethod (compiled code) with the heap. - // Override with specific mechanism for each specialized heap type. - virtual void register_nmethod(nmethod* nm) {} - virtual void unregister_nmethod(nmethod* nm) {} - virtual void flush_nmethod(nmethod* nm) {} - virtual void verify_nmethod(nmethod* nmethod) {} + virtual void register_nmethod(nmethod* nm) = 0; + virtual void unregister_nmethod(nmethod* nm) = 0; + // Callback for when nmethod is about to be deleted. + virtual void flush_nmethod(nmethod* nm) = 0; + virtual void verify_nmethod(nmethod* nm) = 0; void trace_heap_before_gc(const GCTracer* gc_tracer); void trace_heap_after_gc(const GCTracer* gc_tracer); diff -r 6a4abdb6749c -r 879051d3772a src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Mon Apr 01 08:21:45 2019 -0700 +++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp Mon Apr 01 18:34:39 2019 +0200 @@ -584,6 +584,8 @@ public: void register_nmethod(nmethod* nm); void unregister_nmethod(nmethod* nm); + void flush_nmethod(nmethod* nm) {} + void verify_nmethod(nmethod* nm) {} // ---------- Pinning hooks //