RFR: Excessive assert in ShHeap::mark_next

Aleksey Shipilev shade at redhat.com
Mon Mar 5 12:43:31 UTC 2018


This slipped through assert refactoring. The second assert is excessive, because it checks exactly
what the first assert is verifying ("obj == rb(obj)"). Also, mark_next_no_checks is not need,
because it not used anywhere except for mark_next.

diff -r 46caecb58216 src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp	Mon Mar 05 11:06:26 2018 +0100
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.inline.hpp	Mon Mar 05 13:34:37 2018 +0100
@@ -66,11 +66,6 @@
  */
 inline bool ShenandoahHeap::mark_next(oop obj) const {
   shenandoah_assert_not_forwarded(NULL, obj);
-  assert(oopDesc::unsafe_equals(obj, BarrierSet::barrier_set()->read_barrier(obj)), "only mark
forwarded copy of objects");
-  return mark_next_no_checks(obj);
-}
-
-inline bool ShenandoahHeap::mark_next_no_checks(oop obj) const {
   HeapWord* addr = (HeapWord*) obj;
   return (! allocated_after_next_mark_start(addr)) && _next_mark_bit_map->parMark(addr);
 }


Testing: hotspot_fast_gc_shenandoah

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list