< prev index next >

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

Print this page
rev 56398 : 8231410: Shenandoah: clone barrier should use base pointer
Reviewed-by: XXX


  58   shenandoah_assert_correct(NULL, orig);
  59   // store the original value that was in the field reference
  60   assert(ShenandoahThreadLocalData::satb_mark_queue(thread).is_active(), "Shouldn't be here otherwise");
  61   ShenandoahThreadLocalData::satb_mark_queue(thread).enqueue_known_active(orig);
  62 JRT_END
  63 
  64 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier(oopDesc* src))
  65   return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, (oop*)NULL);
  66 JRT_END
  67 
  68 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_fixup(oopDesc* src, oop* load_addr))
  69   return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
  70 JRT_END
  71 
  72 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_fixup_narrow(oopDesc* src, narrowOop* load_addr))
  73   return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
  74 JRT_END
  75 
  76 // Shenandoah clone barrier: makes sure that references point to to-space
  77 // in cloned objects.
  78 JRT_LEAF(void, ShenandoahRuntime::shenandoah_clone_barrier(oopDesc* s, oopDesc* d, size_t length))
  79   oop src = oop(s);
  80   oop dst = oop(d);
  81   shenandoah_assert_correct(NULL, src);
  82   shenandoah_assert_correct(NULL, dst);
  83   ShenandoahBarrierSet::barrier_set()->clone_barrier(src);
  84   RawAccessBarrier<IS_NOT_NULL>::clone(src, dst, length);
  85 JRT_END
  86 
  87 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_native(oopDesc * src))
  88   return (oopDesc*) ShenandoahBarrierSet::barrier_set()->oop_load_from_native_barrier(oop(src));
  89 JRT_END


  58   shenandoah_assert_correct(NULL, orig);
  59   // store the original value that was in the field reference
  60   assert(ShenandoahThreadLocalData::satb_mark_queue(thread).is_active(), "Shouldn't be here otherwise");
  61   ShenandoahThreadLocalData::satb_mark_queue(thread).enqueue_known_active(orig);
  62 JRT_END
  63 
  64 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier(oopDesc* src))
  65   return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, (oop*)NULL);
  66 JRT_END
  67 
  68 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_fixup(oopDesc* src, oop* load_addr))
  69   return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
  70 JRT_END
  71 
  72 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_fixup_narrow(oopDesc* src, narrowOop* load_addr))
  73   return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
  74 JRT_END
  75 
  76 // Shenandoah clone barrier: makes sure that references point to to-space
  77 // in cloned objects.
  78 JRT_LEAF(void, ShenandoahRuntime::shenandoah_clone_barrier(oopDesc* src, jlong* src_ptr, jlong* dst_ptr, size_t length))
  79   oop s = oop(src);
  80   shenandoah_assert_correct(NULL, s);
  81   ShenandoahBarrierSet::barrier_set()->clone_barrier(s);
  82 tty->print_cr("obj size: " SIZE_FORMAT, src->size());
  83 tty->print_cr("cpy size: " SIZE_FORMAT, length);
  84   Copy::conjoint_jlongs_atomic(src_ptr, dst_ptr, length);
  85 JRT_END
  86 
  87 JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_native(oopDesc * src))
  88   return (oopDesc*) ShenandoahBarrierSet::barrier_set()->oop_load_from_native_barrier(oop(src));
  89 JRT_END
< prev index next >