src/hotspot/share/gc/shenandoah/shenandoahClosures.inline.hpp
changeset 58177 4932dce35882
parent 57533 a2912ba36422
child 58679 9c3209ff7550
child 58686 0279391875bf
equal deleted inserted replaced
58176:470af058bd5f 58177:4932dce35882
    90   if (! CompressedOops::is_null(o)) {
    90   if (! CompressedOops::is_null(o)) {
    91     oop obj = CompressedOops::decode_not_null(o);
    91     oop obj = CompressedOops::decode_not_null(o);
    92     if (_heap->in_collection_set(obj)) {
    92     if (_heap->in_collection_set(obj)) {
    93       shenandoah_assert_marked(p, obj);
    93       shenandoah_assert_marked(p, obj);
    94       oop resolved = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
    94       oop resolved = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
    95       if (oopDesc::equals_raw(resolved, obj)) {
    95       if (resolved == obj) {
    96         resolved = _heap->evacuate_object(obj, _thread);
    96         resolved = _heap->evacuate_object(obj, _thread);
    97       }
    97       }
    98       RawAccess<IS_NOT_NULL>::oop_store(p, resolved);
    98       RawAccess<IS_NOT_NULL>::oop_store(p, resolved);
    99     }
    99     }
   100   }
   100   }
   117   oop obj = RawAccess<>::oop_load(p);
   117   oop obj = RawAccess<>::oop_load(p);
   118   if (! CompressedOops::is_null(obj)) {
   118   if (! CompressedOops::is_null(obj)) {
   119     if (_heap->in_collection_set(obj)) {
   119     if (_heap->in_collection_set(obj)) {
   120       shenandoah_assert_marked(p, obj);
   120       shenandoah_assert_marked(p, obj);
   121       oop resolved = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
   121       oop resolved = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
   122       if (oopDesc::equals_raw(resolved, obj)) {
   122       if (resolved == obj) {
   123         resolved = _heap->evacuate_object(obj, _thread);
   123         resolved = _heap->evacuate_object(obj, _thread);
   124       }
   124       }
   125 
   125 
   126       Atomic::cmpxchg(resolved, p, obj);
   126       Atomic::cmpxchg(resolved, p, obj);
   127     }
   127     }