< 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
*** 73,89 ****
return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
JRT_END
// Shenandoah clone barrier: makes sure that references point to to-space
// in cloned objects.
! JRT_LEAF(void, ShenandoahRuntime::shenandoah_clone_barrier(oopDesc* s, oopDesc* d, size_t length))
! oop src = oop(s);
! oop dst = oop(d);
! shenandoah_assert_correct(NULL, src);
! shenandoah_assert_correct(NULL, dst);
! ShenandoahBarrierSet::barrier_set()->clone_barrier(src);
! RawAccessBarrier<IS_NOT_NULL>::clone(src, dst, length);
JRT_END
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_native(oopDesc * src))
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->oop_load_from_native_barrier(oop(src));
JRT_END
--- 73,89 ----
return ShenandoahBarrierSet::barrier_set()->load_reference_barrier_mutator(src, load_addr);
JRT_END
// Shenandoah clone barrier: makes sure that references point to to-space
// in cloned objects.
! JRT_LEAF(void, ShenandoahRuntime::shenandoah_clone_barrier(oopDesc* src, jlong* src_ptr, jlong* dst_ptr, size_t length))
! oop s = oop(src);
! shenandoah_assert_correct(NULL, s);
! ShenandoahBarrierSet::barrier_set()->clone_barrier(s);
! tty->print_cr("obj size: " SIZE_FORMAT, src->size());
! tty->print_cr("cpy size: " SIZE_FORMAT, length);
! Copy::conjoint_jlongs_atomic(src_ptr, dst_ptr, length);
JRT_END
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_native(oopDesc * src))
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->oop_load_from_native_barrier(oop(src));
JRT_END
< prev index next >