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
|