< prev index next >
src/hotspot/share/gc/shared/genOopClosures.inline.hpp
Print this page
*** 66,78 ****
if ((HeapWord*)obj < gen_boundary()) {
rs()->write_ref_field_gc_par(p, obj);
}
}
! inline void OopsInKlassOrGenClosure::do_klass_barrier() {
! assert(_scanned_klass != NULL, "Must be");
! _scanned_klass->record_modified_oops();
}
// NOTE! Any changes made here should also be made
// in FastScanClosure::do_oop_work()
template <class T> inline void ScanClosure::do_oop_work(T* p) {
--- 66,80 ----
if ((HeapWord*)obj < gen_boundary()) {
rs()->write_ref_field_gc_par(p, obj);
}
}
! inline void OopsInClassLoaderDataOrGenClosure::do_cld_barrier() {
! assert(_scanned_cld != NULL, "Must be");
! if (!_scanned_cld->has_modified_oops()) {
! _scanned_cld->record_modified_oops();
! }
}
// NOTE! Any changes made here should also be made
// in FastScanClosure::do_oop_work()
template <class T> inline void ScanClosure::do_oop_work(T* p) {
*** 85,96 ****
oop new_obj = obj->is_forwarded() ? obj->forwardee()
: _g->copy_to_survivor_space(obj);
oopDesc::encode_store_heap_oop_not_null(p, new_obj);
}
! if (is_scanning_a_klass()) {
! do_klass_barrier();
} else if (_gc_barrier) {
// Now call parent closure
do_barrier(p);
}
}
--- 87,98 ----
oop new_obj = obj->is_forwarded() ? obj->forwardee()
: _g->copy_to_survivor_space(obj);
oopDesc::encode_store_heap_oop_not_null(p, new_obj);
}
! if (is_scanning_a_cld()) {
! do_cld_barrier();
} else if (_gc_barrier) {
// Now call parent closure
do_barrier(p);
}
}
*** 109,120 ****
if ((HeapWord*)obj < _boundary) {
assert(!_g->to()->is_in_reserved(obj), "Scanning field twice?");
oop new_obj = obj->is_forwarded() ? obj->forwardee()
: _g->copy_to_survivor_space(obj);
oopDesc::encode_store_heap_oop_not_null(p, new_obj);
! if (is_scanning_a_klass()) {
! do_klass_barrier();
} else if (_gc_barrier) {
// Now call parent closure
do_barrier(p);
}
}
--- 111,122 ----
if ((HeapWord*)obj < _boundary) {
assert(!_g->to()->is_in_reserved(obj), "Scanning field twice?");
oop new_obj = obj->is_forwarded() ? obj->forwardee()
: _g->copy_to_survivor_space(obj);
oopDesc::encode_store_heap_oop_not_null(p, new_obj);
! if (is_scanning_a_cld()) {
! do_cld_barrier();
} else if (_gc_barrier) {
// Now call parent closure
do_barrier(p);
}
}
< prev index next >