< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp

Print this page
rev 58648 : Shenandoah: New incremental-update mode


 226   ShenandoahMarkingContext* const marking_context = _heap->marking_context();
 227   if (_heap->is_concurrent_root_in_progress() && !marking_context->is_marked(obj)) {
 228     Thread* thr = Thread::current();
 229     if (thr->is_Java_thread()) {
 230       return NULL;
 231     } else {
 232       return obj;
 233     }
 234   }
 235 
 236   oop fwd = load_reference_barrier_not_null(obj);
 237   if (load_addr != NULL && fwd != obj) {
 238     // Since we are here and we know the load address, update the reference.
 239     ShenandoahHeap::cas_oop(fwd, load_addr, obj);
 240   }
 241 
 242   return fwd;
 243 }
 244 
 245 void ShenandoahBarrierSet::clone_barrier_runtime(oop src) {
 246   if (_heap->has_forwarded_objects()) {
 247     clone_barrier(src);
 248   }
 249 }
 250 


 226   ShenandoahMarkingContext* const marking_context = _heap->marking_context();
 227   if (_heap->is_concurrent_root_in_progress() && !marking_context->is_marked(obj)) {
 228     Thread* thr = Thread::current();
 229     if (thr->is_Java_thread()) {
 230       return NULL;
 231     } else {
 232       return obj;
 233     }
 234   }
 235 
 236   oop fwd = load_reference_barrier_not_null(obj);
 237   if (load_addr != NULL && fwd != obj) {
 238     // Since we are here and we know the load address, update the reference.
 239     ShenandoahHeap::cas_oop(fwd, load_addr, obj);
 240   }
 241 
 242   return fwd;
 243 }
 244 
 245 void ShenandoahBarrierSet::clone_barrier_runtime(oop src) {
 246   if (_heap->has_forwarded_objects() || (ShenandoahStoreValEnqueueBarrier && _heap->is_concurrent_mark_in_progress())) {
 247     clone_barrier(src);
 248   }
 249 }
 250 
< prev index next >