RFR: Excessive assert in ShHeap::mark_next

Roman Kennke roman at kennke.org
Mon Mar 5 13:02:46 UTC 2018


Am 05.03.2018 um 13:43 schrieb Aleksey Shipilev:
> 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
> 
> 

Looks fine. Thanks!

Roman



More information about the shenandoah-dev mailing list