< prev index next >
src/share/vm/gc/shared/genOopClosures.inline.hpp
Print this page
@@ -31,23 +31,28 @@
#include "gc/shared/genOopClosures.hpp"
#include "gc/shared/generation.hpp"
#include "gc/shared/space.hpp"
inline OopsInGenClosure::OopsInGenClosure(Generation* gen) :
- ExtendedOopClosure(gen->ref_processor()), _orig_gen(gen), _rs(NULL) {
+ ExtendedOopClosure(gen->ref_processor()), _gen(NULL), _rs(NULL) {
set_generation(gen);
}
inline void OopsInGenClosure::set_generation(Generation* gen) {
+ assert(_gen == NULL, "Generation already initialized");
_gen = gen;
_gen_boundary = _gen->reserved().start();
// Barrier set for the heap, must be set after heap is initialized
if (_rs == NULL) {
_rs = GenCollectedHeap::heap()->rem_set();
}
}
+inline void OopsInGenClosure::assert_generation(Generation* gen) {
+ assert(_gen == gen, "Generations mismatch. Fix it now!!");
+}
+
template <class T> inline void OopsInGenClosure::do_barrier(T* p) {
assert(generation()->is_in_reserved(p), "expected ref in generation");
T heap_oop = oopDesc::load_heap_oop(p);
assert(!oopDesc::is_null(heap_oop), "expected non-null oop");
oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
< prev index next >