< prev index next >
src/share/vm/gc/serial/markSweep.hpp
Print this page
*** 47,56 ****
--- 47,57 ----
//
// Class unloading will only occur when a full gc is invoked.
// declared at end
class PreservedMark;
+ class MarkAndPushClosure;
class MarkSweep : AllStatic {
//
// Inline closure decls
//
*** 58,74 ****
public:
virtual void do_oop(oop* p);
virtual void do_oop(narrowOop* p);
};
- class MarkAndPushClosure: public ExtendedOopClosure {
- public:
- template <typename T> void do_oop_nv(T* p);
- virtual void do_oop(oop* p);
- virtual void do_oop(narrowOop* p);
- };
-
class FollowStackClosure: public VoidClosure {
public:
virtual void do_void();
};
--- 59,68 ----
*** 144,153 ****
--- 138,148 ----
// Accessors
static uint total_invocations() { return _total_invocations; }
// Reference Processing
static ReferenceProcessor* const ref_processor() { return _ref_processor; }
+ static void set_ref_processor(ReferenceProcessor* rp);
// Archive Object handling
static inline bool is_archive_object(oop object);
static STWGCTimer* gc_timer() { return _gc_timer; }
*** 169,179 ****
static void follow_array(objArrayOop array, int index);
static void follow_klass(Klass* klass);
! static void follow_class_loader(ClassLoaderData* cld);
static int adjust_pointers(oop obj);
static void preserve_mark(oop p, markOop mark);
// Save the mark word so it can be restored later
--- 164,174 ----
static void follow_array(objArrayOop array, int index);
static void follow_klass(Klass* klass);
! static void follow_cld(ClassLoaderData* cld);
static int adjust_pointers(oop obj);
static void preserve_mark(oop p, markOop mark);
// Save the mark word so it can be restored later
*** 181,190 ****
--- 176,203 ----
static void restore_marks(); // Restore the marks that we saved in preserve_mark
template <class T> static inline void adjust_pointer(T* p);
};
+ class MarkAndPushClosure: public ExtendedOopClosure {
+ public:
+ template <typename T> void do_oop_nv(T* p);
+ virtual void do_oop(oop* p);
+ virtual void do_oop(narrowOop* p);
+
+ virtual bool do_metadata();
+ bool do_metadata_nv();
+
+ virtual void do_klass(Klass* k);
+ void do_klass_nv(Klass* k);
+
+ virtual void do_cld(ClassLoaderData* cld);
+ void do_cld_nv(ClassLoaderData* cld);
+
+ void set_ref_processor(ReferenceProcessor* rp) { _ref_processor = rp; }
+ };
+
class PreservedMark VALUE_OBJ_CLASS_SPEC {
private:
oop _obj;
markOop _mark;
< prev index next >