< prev index next >

src/share/vm/gc/shenandoah/shenandoahOopClosures.hpp

Print this page
rev 13130 : Interleave partial GCs with concurrent GCs.

*** 28,38 **** typedef BufferedOverflowTaskQueue<ObjArrayChunkedTask, mtGC> ShenandoahBufferedOverflowTaskQueue; typedef Padded<ShenandoahBufferedOverflowTaskQueue> SCMObjToScanQueue; class ShenandoahHeap; - class ShenandoahConnectionMatrix; enum UpdateRefsMode { NONE, // No reference updating RESOLVE, // Only a read-barrier (no reference updating) SIMPLE, // Reference updating using simple store --- 28,37 ----
*** 41,65 **** class ShenandoahMarkRefsSuperClosure : public MetadataAwareOopClosure { private: SCMObjToScanQueue* _queue; ShenandoahHeap* _heap; - ShenandoahConnectionMatrix* _conn_matrix; public: ShenandoahMarkRefsSuperClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp); ! template <class T, UpdateRefsMode UPDATE_MODE, bool UPDATE_MATRIX> void work(T *p); }; class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkRefsSuperClosure { public: ShenandoahMarkUpdateRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, CONCURRENT, false>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return false; } virtual bool do_metadata() { return false; } }; --- 40,63 ---- class ShenandoahMarkRefsSuperClosure : public MetadataAwareOopClosure { private: SCMObjToScanQueue* _queue; ShenandoahHeap* _heap; public: ShenandoahMarkRefsSuperClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp); ! template <class T, UpdateRefsMode UPDATE_MODE> void work(T *p); }; class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkRefsSuperClosure { public: ShenandoahMarkUpdateRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, CONCURRENT>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return false; } virtual bool do_metadata() { return false; } };
*** 68,78 **** public: ShenandoahMarkUpdateRefsMetadataClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, CONCURRENT, false>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return true; } virtual bool do_metadata() { return true; } }; --- 66,76 ---- public: ShenandoahMarkUpdateRefsMetadataClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, CONCURRENT>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return true; } virtual bool do_metadata() { return true; } };
*** 81,91 **** public: ShenandoahMarkRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, NONE, false>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return false; } virtual bool do_metadata() { return false; } }; --- 79,89 ---- public: ShenandoahMarkRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, NONE>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return false; } virtual bool do_metadata() { return false; } };
*** 94,104 **** public: ShenandoahMarkResolveRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, RESOLVE, false>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return false; } virtual bool do_metadata() { return false; } }; --- 92,102 ---- public: ShenandoahMarkResolveRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, RESOLVE>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return false; } virtual bool do_metadata() { return false; } };
*** 107,169 **** public: ShenandoahMarkRefsMetadataClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, NONE, false>(p); } ! virtual void do_oop(narrowOop* p) { do_oop_nv(p); } ! virtual void do_oop(oop* p) { do_oop_nv(p); } ! inline bool do_metadata_nv() { return true; } ! virtual bool do_metadata() { return true; } ! }; ! ! class ShenandoahMarkUpdateRefsMatrixClosure : public ShenandoahMarkRefsSuperClosure { ! public: ! ShenandoahMarkUpdateRefsMatrixClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ! ShenandoahMarkRefsSuperClosure(q, rp) {}; ! ! template <class T> ! inline void do_oop_nv(T* p) { work<T, CONCURRENT, true>(p); } ! virtual void do_oop(narrowOop* p) { do_oop_nv(p); } ! virtual void do_oop(oop* p) { do_oop_nv(p); } ! inline bool do_metadata_nv() { return false; } ! virtual bool do_metadata() { return false; } ! }; ! ! class ShenandoahMarkUpdateRefsMetadataMatrixClosure : public ShenandoahMarkRefsSuperClosure { ! public: ! ShenandoahMarkUpdateRefsMetadataMatrixClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ! ShenandoahMarkRefsSuperClosure(q, rp) {}; ! ! template <class T> ! inline void do_oop_nv(T* p) { work<T, CONCURRENT, true>(p); } ! virtual void do_oop(narrowOop* p) { do_oop_nv(p); } ! virtual void do_oop(oop* p) { do_oop_nv(p); } ! inline bool do_metadata_nv() { return true; } ! virtual bool do_metadata() { return true; } ! }; ! ! class ShenandoahMarkRefsMatrixClosure : public ShenandoahMarkRefsSuperClosure { ! public: ! ShenandoahMarkRefsMatrixClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ! ShenandoahMarkRefsSuperClosure(q, rp) {}; ! ! template <class T> ! inline void do_oop_nv(T* p) { work<T, NONE, true>(p); } ! virtual void do_oop(narrowOop* p) { do_oop_nv(p); } ! virtual void do_oop(oop* p) { do_oop_nv(p); } ! inline bool do_metadata_nv() { return false; } ! virtual bool do_metadata() { return false; } ! }; ! ! class ShenandoahMarkRefsMetadataMatrixClosure : public ShenandoahMarkRefsSuperClosure { ! public: ! ShenandoahMarkRefsMetadataMatrixClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ! ShenandoahMarkRefsSuperClosure(q, rp) {}; ! ! template <class T> ! inline void do_oop_nv(T* p) { work<T, NONE, true>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return true; } virtual bool do_metadata() { return true; } }; --- 105,115 ---- public: ShenandoahMarkRefsMetadataClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) : ShenandoahMarkRefsSuperClosure(q, rp) {}; template <class T> ! inline void do_oop_nv(T* p) { work<T, NONE>(p); } virtual void do_oop(narrowOop* p) { do_oop_nv(p); } virtual void do_oop(oop* p) { do_oop_nv(p); } inline bool do_metadata_nv() { return true; } virtual bool do_metadata() { return true; } };
< prev index next >