diff a/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp b/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp @@ -92,10 +92,22 @@ inline ShenandoahEvacUpdateOopStorageRootsClosure(); inline void do_oop(oop* p); inline void do_oop(narrowOop* p); }; +template +class ShenandoahCleanUpdateWeakOopsClosure : public OopClosure { +private: + IsAlive* _is_alive; + KeepAlive* _keep_alive; + +public: + inline ShenandoahCleanUpdateWeakOopsClosure(IsAlive* is_alive, KeepAlive* keep_alive); + inline void do_oop(oop* p); + inline void do_oop(narrowOop* p); +}; + class ShenandoahCodeBlobAndDisarmClosure: public CodeBlobToOopClosure { private: BarrierSetNMethod* const _bs; public: