< prev index next >
src/share/vm/gc/shared/genOopClosures.hpp
Print this page
*** 40,50 ****
// method at the end of their own do_oop method!
// Note: no do_oop defined, this is an abstract class.
class OopsInGenClosure : public ExtendedOopClosure {
private:
- Generation* _orig_gen; // generation originally set in ctor
Generation* _gen; // generation being scanned
protected:
// Some subtypes need access.
HeapWord* _gen_boundary; // start of generation
--- 40,49 ----
*** 61,86 ****
// Version for use by closures that may be called in parallel code.
template <class T> void par_do_barrier(T* p);
public:
OopsInGenClosure() : ExtendedOopClosure(NULL),
! _orig_gen(NULL), _gen(NULL), _gen_boundary(NULL), _rs(NULL) {};
OopsInGenClosure(Generation* gen);
- void set_generation(Generation* gen);
-
- void reset_generation() { _gen = _orig_gen; }
// Problem with static closures: must have _gen_boundary set at some point,
// but cannot do this until after the heap is initialized.
! void set_orig_generation(Generation* gen) {
! _orig_gen = gen;
! set_generation(gen);
! }
HeapWord* gen_boundary() { return _gen_boundary; }
-
};
// Super class for scan closures. It contains code to dirty scanned Klasses.
class OopsInKlassOrGenClosure: public OopsInGenClosure {
Klass* _scanned_klass;
--- 60,79 ----
// Version for use by closures that may be called in parallel code.
template <class T> void par_do_barrier(T* p);
public:
OopsInGenClosure() : ExtendedOopClosure(NULL),
! _gen(NULL), _gen_boundary(NULL), _rs(NULL) {};
OopsInGenClosure(Generation* gen);
// Problem with static closures: must have _gen_boundary set at some point,
// but cannot do this until after the heap is initialized.
! void set_generation(Generation* gen);
! void assert_generation(Generation* gen);
HeapWord* gen_boundary() { return _gen_boundary; }
};
// Super class for scan closures. It contains code to dirty scanned Klasses.
class OopsInKlassOrGenClosure: public OopsInGenClosure {
Klass* _scanned_klass;
< prev index next >