src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp
changeset 58177 4932dce35882
parent 55287 09b09388f197
child 58679 9c3209ff7550
child 58729 15f4471787b9
equal deleted inserted replaced
58176:470af058bd5f 58177:4932dce35882
    40   T o = RawAccess<>::oop_load(p);
    40   T o = RawAccess<>::oop_load(p);
    41   if (!CompressedOops::is_null(o)) {
    41   if (!CompressedOops::is_null(o)) {
    42     oop obj = CompressedOops::decode_not_null(o);
    42     oop obj = CompressedOops::decode_not_null(o);
    43     if (DEGEN) {
    43     if (DEGEN) {
    44       oop forw = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
    44       oop forw = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
    45       if (!oopDesc::equals_raw(obj, forw)) {
    45       if (obj != forw) {
    46         // Update reference.
    46         // Update reference.
    47         RawAccess<IS_NOT_NULL>::oop_store(p, forw);
    47         RawAccess<IS_NOT_NULL>::oop_store(p, forw);
    48       }
    48       }
    49       obj = forw;
    49       obj = forw;
    50     } else if (_heap->in_collection_set(obj)) {
    50     } else if (_heap->in_collection_set(obj)) {
    51       oop forw = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
    51       oop forw = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
    52       if (oopDesc::equals_raw(obj, forw)) {
    52       if (obj == forw) {
    53         forw = _heap->evacuate_object(obj, thread);
    53         forw = _heap->evacuate_object(obj, thread);
    54       }
    54       }
    55       shenandoah_assert_forwarded_except(p, obj, _heap->cancelled_gc());
    55       shenandoah_assert_forwarded_except(p, obj, _heap->cancelled_gc());
    56       // Update reference.
    56       // Update reference.
    57       ShenandoahHeap::cas_oop(forw, p, obj);
    57       ShenandoahHeap::cas_oop(forw, p, obj);