--- old/src/hotspot/share/gc/shared/genOopClosures.inline.hpp 2017-09-25 13:08:16.190054929 -0400 +++ new/src/hotspot/share/gc/shared/genOopClosures.inline.hpp 2017-09-25 13:08:15.765030168 -0400 @@ -68,9 +68,11 @@ } } -inline void OopsInKlassOrGenClosure::do_klass_barrier() { - assert(_scanned_klass != NULL, "Must be"); - _scanned_klass->record_modified_oops(); +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 @@ -87,8 +89,8 @@ oopDesc::encode_store_heap_oop_not_null(p, new_obj); } - if (is_scanning_a_klass()) { - do_klass_barrier(); + if (is_scanning_a_cld()) { + do_cld_barrier(); } else if (_gc_barrier) { // Now call parent closure do_barrier(p); @@ -111,8 +113,8 @@ 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(); + if (is_scanning_a_cld()) { + do_cld_barrier(); } else if (_gc_barrier) { // Now call parent closure do_barrier(p);