--- old/src/share/vm/gc/shared/genOopClosures.inline.hpp 2015-10-16 17:28:12.000000000 +0200 +++ new/src/share/vm/gc/shared/genOopClosures.inline.hpp 2015-10-16 17:28:12.000000000 +0200 @@ -34,11 +34,12 @@ #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 @@ -48,6 +49,10 @@ } } +inline void OopsInGenClosure::assert_generation(Generation* gen) { + assert(_gen == gen, "Generations mismatch. Fix it now!!"); +} + template 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);