< prev index next >
src/share/vm/gc/shenandoah/shenandoahOopClosures.hpp
Print this page
rev 13130 : Interleave partial GCs with concurrent GCs.
@@ -28,11 +28,10 @@
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
@@ -41,25 +40,24 @@
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>
+ 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, false>(p); }
+ 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,11 +66,11 @@
public:
ShenandoahMarkUpdateRefsMetadataClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) :
ShenandoahMarkRefsSuperClosure(q, rp) {};
template <class T>
- inline void do_oop_nv(T* p) { work<T, CONCURRENT, false>(p); }
+ 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,11 +79,11 @@
public:
ShenandoahMarkRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) :
ShenandoahMarkRefsSuperClosure(q, rp) {};
template <class T>
- inline void do_oop_nv(T* p) { work<T, NONE, false>(p); }
+ 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,11 +92,11 @@
public:
ShenandoahMarkResolveRefsClosure(SCMObjToScanQueue* q, ReferenceProcessor* rp) :
ShenandoahMarkRefsSuperClosure(q, rp) {};
template <class T>
- inline void do_oop_nv(T* p) { work<T, RESOLVE, false>(p); }
+ 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,63 +105,11 @@
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); }
+ 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 >