< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp

Print this page
rev 58558 : 8241605: Shenandoah: More aggressive reference discovery

*** 90,121 **** if (obj != NULL && ShenandoahStoreValEnqueueBarrier && _heap->is_concurrent_traversal_in_progress()) { enqueue(obj); } } - inline void ShenandoahBarrierSet::keep_alive_barrier(oop value) { - assert(value != NULL, "checked before"); - if (ShenandoahKeepAliveBarrier && _heap->is_concurrent_mark_in_progress()) { - enqueue(value); - } - } - inline void ShenandoahBarrierSet::keep_alive_if_weak(DecoratorSet decorators, oop value) { assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Reference strength must be known"); const bool on_strong_oop_ref = (decorators & ON_STRONG_OOP_REF) != 0; const bool peek = (decorators & AS_NO_KEEPALIVE) != 0; if (!peek && !on_strong_oop_ref) { ! keep_alive_barrier(value); } } template <DecoratorSet decorators> inline void ShenandoahBarrierSet::keep_alive_if_weak(oop value) { assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Reference strength must be known"); if (!HasDecorator<decorators, ON_STRONG_OOP_REF>::value && !HasDecorator<decorators, AS_NO_KEEPALIVE>::value) { ! keep_alive_barrier(value); } } template <DecoratorSet decorators, typename BarrierSetT> template <typename T> --- 90,114 ---- if (obj != NULL && ShenandoahStoreValEnqueueBarrier && _heap->is_concurrent_traversal_in_progress()) { enqueue(obj); } } inline void ShenandoahBarrierSet::keep_alive_if_weak(DecoratorSet decorators, oop value) { assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Reference strength must be known"); const bool on_strong_oop_ref = (decorators & ON_STRONG_OOP_REF) != 0; const bool peek = (decorators & AS_NO_KEEPALIVE) != 0; if (!peek && !on_strong_oop_ref) { ! satb_enqueue(value); } } template <DecoratorSet decorators> inline void ShenandoahBarrierSet::keep_alive_if_weak(oop value) { assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Reference strength must be known"); if (!HasDecorator<decorators, ON_STRONG_OOP_REF>::value && !HasDecorator<decorators, AS_NO_KEEPALIVE>::value) { ! satb_enqueue(value); } } template <DecoratorSet decorators, typename BarrierSetT> template <typename T>
< prev index next >