diff -r d9132bdf6c30 -r 9d62da00bf15 src/hotspot/share/oops/instanceRefKlass.inline.hpp --- a/src/hotspot/share/oops/instanceRefKlass.inline.hpp Mon Jun 25 12:44:52 2018 +0200 +++ b/src/hotspot/share/oops/instanceRefKlass.inline.hpp Sat May 26 06:59:49 2018 +0200 @@ -37,19 +37,19 @@ #include "utilities/globalDefinitions.hpp" #include "utilities/macros.hpp" -template +template void InstanceRefKlass::do_referent(oop obj, OopClosureType* closure, Contains& contains) { T* referent_addr = (T*)java_lang_ref_Reference::referent_addr_raw(obj); if (contains(referent_addr)) { - Devirtualizer::do_oop(closure, referent_addr); + Devirtualizer::do_oop(closure, referent_addr); } } -template +template void InstanceRefKlass::do_discovered(oop obj, OopClosureType* closure, Contains& contains) { T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr_raw(obj); if (contains(discovered_addr)) { - Devirtualizer::do_oop(closure, discovered_addr); + Devirtualizer::do_oop(closure, discovered_addr); } } @@ -76,7 +76,7 @@ return false; } -template +template void InstanceRefKlass::oop_oop_iterate_discovery(oop obj, ReferenceType type, OopClosureType* closure, Contains& contains) { // Try to discover reference and return if it succeeds. if (try_discover(obj, type, closure)) { @@ -84,38 +84,38 @@ } // Treat referent and discovered as normal oops. - do_referent(obj, closure, contains); - do_discovered(obj, closure, contains); + do_referent(obj, closure, contains); + do_discovered(obj, closure, contains); } -template +template void InstanceRefKlass::oop_oop_iterate_fields(oop obj, OopClosureType* closure, Contains& contains) { - do_referent(obj, closure, contains); - do_discovered(obj, closure, contains); + do_referent(obj, closure, contains); + do_discovered(obj, closure, contains); } -template +template void InstanceRefKlass::oop_oop_iterate_discovered_and_discovery(oop obj, ReferenceType type, OopClosureType* closure, Contains& contains) { // Explicitly apply closure to the discovered field. - do_discovered(obj, closure, contains); + do_discovered(obj, closure, contains); // Then do normal reference processing with discovery. - oop_oop_iterate_discovery(obj, type, closure, contains); + oop_oop_iterate_discovery(obj, type, closure, contains); } -template -void InstanceRefKlass::oop_oop_iterate_ref_processing_specialized(oop obj, OopClosureType* closure, Contains& contains) { +template +void InstanceRefKlass::oop_oop_iterate_ref_processing(oop obj, OopClosureType* closure, Contains& contains) { switch (closure->reference_iteration_mode()) { - case ExtendedOopClosure::DO_DISCOVERY: + case OopIterateClosure::DO_DISCOVERY: trace_reference_gc("do_discovery", obj); - oop_oop_iterate_discovery(obj, reference_type(), closure, contains); + oop_oop_iterate_discovery(obj, reference_type(), closure, contains); break; - case ExtendedOopClosure::DO_DISCOVERED_AND_DISCOVERY: + case OopIterateClosure::DO_DISCOVERED_AND_DISCOVERY: trace_reference_gc("do_discovered_and_discovery", obj); - oop_oop_iterate_discovered_and_discovery(obj, reference_type(), closure, contains); + oop_oop_iterate_discovered_and_discovery(obj, reference_type(), closure, contains); break; - case ExtendedOopClosure::DO_FIELDS: + case OopIterateClosure::DO_FIELDS: trace_reference_gc("do_fields", obj); - oop_oop_iterate_fields(obj, closure, contains); + oop_oop_iterate_fields(obj, closure, contains); break; default: ShouldNotReachHere(); @@ -127,14 +127,10 @@ template bool operator()(T* p) const { return true; } }; -template +template void InstanceRefKlass::oop_oop_iterate_ref_processing(oop obj, OopClosureType* closure) { AlwaysContains always_contains; - if (UseCompressedOops) { - oop_oop_iterate_ref_processing_specialized(obj, closure, always_contains); - } else { - oop_oop_iterate_ref_processing_specialized(obj, closure, always_contains); - } + oop_oop_iterate_ref_processing(obj, closure, always_contains); } class MrContains { @@ -144,38 +140,31 @@ template bool operator()(T* p) const { return _mr.contains(p); } }; -template +template void InstanceRefKlass::oop_oop_iterate_ref_processing_bounded(oop obj, OopClosureType* closure, MemRegion mr) { const MrContains contains(mr); - if (UseCompressedOops) { - oop_oop_iterate_ref_processing_specialized(obj, closure, contains); - } else { - oop_oop_iterate_ref_processing_specialized(obj, closure, contains); - } + oop_oop_iterate_ref_processing(obj, closure, contains); +} + +template +void InstanceRefKlass::oop_oop_iterate(oop obj, OopClosureType* closure) { + InstanceKlass::oop_oop_iterate(obj, closure); + + oop_oop_iterate_ref_processing(obj, closure); } -template -void InstanceRefKlass::oop_oop_iterate(oop obj, OopClosureType* closure) { - InstanceKlass::oop_oop_iterate(obj, closure); +template +void InstanceRefKlass::oop_oop_iterate_reverse(oop obj, OopClosureType* closure) { + InstanceKlass::oop_oop_iterate_reverse(obj, closure); - oop_oop_iterate_ref_processing(obj, closure); + oop_oop_iterate_ref_processing(obj, closure); } -#if INCLUDE_OOP_OOP_ITERATE_BACKWARDS -template -void InstanceRefKlass::oop_oop_iterate_reverse(oop obj, OopClosureType* closure) { - InstanceKlass::oop_oop_iterate_reverse(obj, closure); +template +void InstanceRefKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) { + InstanceKlass::oop_oop_iterate_bounded(obj, closure, mr); - oop_oop_iterate_ref_processing(obj, closure); -} -#endif // INCLUDE_OOP_OOP_ITERATE_BACKWARDS - - -template -void InstanceRefKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) { - InstanceKlass::oop_oop_iterate_bounded(obj, closure, mr); - - oop_oop_iterate_ref_processing_bounded(obj, closure, mr); + oop_oop_iterate_ref_processing_bounded(obj, closure, mr); } #ifdef ASSERT @@ -192,11 +181,4 @@ } #endif -// Macro to define InstanceRefKlass::oop_oop_iterate for virtual/nonvirtual for -// all closures. Macros calling macros above for each oop size. -#define ALL_INSTANCE_REF_KLASS_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix) \ - OOP_OOP_ITERATE_DEFN( InstanceRefKlass, OopClosureType, nv_suffix) \ - OOP_OOP_ITERATE_DEFN_BOUNDED( InstanceRefKlass, OopClosureType, nv_suffix) \ - OOP_OOP_ITERATE_DEFN_BACKWARDS(InstanceRefKlass, OopClosureType, nv_suffix) - #endif // SHARE_VM_OOPS_INSTANCEREFKLASS_INLINE_HPP