equal
deleted
inserted
replaced
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 } |