OpenJDK / bsd-port / jdk9 / hotspot
changeset 9735:0dfc2d472052
8144701: Change three G1 remembererd set closures to be OopClosures
Reviewed-by: mgerdin, stefank
author | sjohanss |
---|---|
date | Fri, 11 Dec 2015 17:49:41 +0100 |
parents | 601ef5feffd2 |
children | e710f1bb5781 |
files | src/share/vm/gc/g1/g1OopClosures.hpp src/share/vm/gc/g1/g1OopClosures.inline.hpp src/share/vm/gc/g1/g1_specialized_oop_closures.hpp |
diffstat | 3 files changed, 16 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/gc/g1/g1OopClosures.hpp Fri Dec 11 17:49:40 2015 +0100 +++ b/src/share/vm/gc/g1/g1OopClosures.hpp Fri Dec 11 17:49:41 2015 +0100 @@ -201,40 +201,40 @@ // during an evacuation pause) to record cards containing // pointers into the collection set. -class G1Mux2Closure : public ExtendedOopClosure { +class G1Mux2Closure : public OopClosure { OopClosure* _c1; OopClosure* _c2; public: G1Mux2Closure(OopClosure *c1, OopClosure *c2); - template <class T> void do_oop_nv(T* p); - virtual void do_oop(oop* p) { do_oop_nv(p); } - virtual void do_oop(narrowOop* p) { do_oop_nv(p); } + template <class T> void do_oop_work(T* p); + virtual void do_oop(oop* p) { do_oop_work(p); } + virtual void do_oop(narrowOop* p) { do_oop_work(p); } }; // A closure that returns true if it is actually applied // to a reference -class G1TriggerClosure : public ExtendedOopClosure { +class G1TriggerClosure : public OopClosure { bool _triggered; public: G1TriggerClosure(); bool triggered() const { return _triggered; } - template <class T> void do_oop_nv(T* p); - virtual void do_oop(oop* p) { do_oop_nv(p); } - virtual void do_oop(narrowOop* p) { do_oop_nv(p); } + template <class T> void do_oop_work(T* p); + virtual void do_oop(oop* p) { do_oop_work(p); } + virtual void do_oop(narrowOop* p) { do_oop_work(p); } }; // A closure which uses a triggering closure to determine // whether to apply an oop closure. -class G1InvokeIfNotTriggeredClosure: public ExtendedOopClosure { +class G1InvokeIfNotTriggeredClosure: public OopClosure { G1TriggerClosure* _trigger_cl; OopClosure* _oop_cl; public: G1InvokeIfNotTriggeredClosure(G1TriggerClosure* t, OopClosure* oc); - template <class T> void do_oop_nv(T* p); - virtual void do_oop(oop* p) { do_oop_nv(p); } - virtual void do_oop(narrowOop* p) { do_oop_nv(p); } + template <class T> void do_oop_work(T* p); + virtual void do_oop(oop* p) { do_oop_work(p); } + virtual void do_oop(narrowOop* p) { do_oop_work(p); } }; class G1UpdateRSOrPushRefOopClosure: public OopClosure {
--- a/src/share/vm/gc/g1/g1OopClosures.inline.hpp Fri Dec 11 17:49:40 2015 +0100 +++ b/src/share/vm/gc/g1/g1OopClosures.inline.hpp Fri Dec 11 17:49:41 2015 +0100 @@ -136,20 +136,20 @@ } template <class T> -inline void G1Mux2Closure::do_oop_nv(T* p) { +inline void G1Mux2Closure::do_oop_work(T* p) { // Apply first closure; then apply the second. _c1->do_oop(p); _c2->do_oop(p); } template <class T> -inline void G1TriggerClosure::do_oop_nv(T* p) { +inline void G1TriggerClosure::do_oop_work(T* p) { // Record that this closure was actually applied (triggered). _triggered = true; } template <class T> -inline void G1InvokeIfNotTriggeredClosure::do_oop_nv(T* p) { +inline void G1InvokeIfNotTriggeredClosure::do_oop_work(T* p) { if (!_trigger_cl->triggered()) { _oop_cl->do_oop(p); }
--- a/src/share/vm/gc/g1/g1_specialized_oop_closures.hpp Fri Dec 11 17:49:40 2015 +0100 +++ b/src/share/vm/gc/g1/g1_specialized_oop_closures.hpp Fri Dec 11 17:49:41 2015 +0100 @@ -39,19 +39,11 @@ class G1CMOopClosure; class G1RootRegionScanClosure; -// Specialized oop closures from g1RemSet.cpp -class G1Mux2Closure; -class G1TriggerClosure; -class G1InvokeIfNotTriggeredClosure; - #define SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_G1(f) \ f(G1ParScanClosure,_nv) \ f(G1ParPushHeapRSClosure,_nv) \ f(FilterOutOfRegionClosure,_nv) \ f(G1CMOopClosure,_nv) \ - f(G1RootRegionScanClosure,_nv) \ - f(G1Mux2Closure,_nv) \ - f(G1TriggerClosure,_nv) \ - f(G1InvokeIfNotTriggeredClosure,_nv) + f(G1RootRegionScanClosure,_nv) #endif // SHARE_VM_GC_G1_G1_SPECIALIZED_OOP_CLOSURES_HPP