8340181: Shenandoah: Cleanup ShenandoahRuntime stubs
Reviewed-by: adinn, phh, wkemper
This commit is contained in:
parent
822a773873
commit
988a531b09
src/hotspot
cpu
aarch64/gc/shenandoah
ppc/gc/shenandoah
riscv/gc/shenandoah
x86/gc/shenandoah
share/gc/shenandoah
@ -67,9 +67,9 @@ void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, Dec
|
||||
|
||||
__ push(saved_regs, sp);
|
||||
if (UseCompressedOops) {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop_entry), src, dst, count);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop), src, dst, count);
|
||||
} else {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop_entry), src, dst, count);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop), src, dst, count);
|
||||
}
|
||||
__ pop(saved_regs, sp);
|
||||
__ bind(done);
|
||||
@ -164,9 +164,9 @@ void ShenandoahBarrierSetAssembler::satb_write_barrier_pre(MacroAssembler* masm,
|
||||
|
||||
if (expand_call) {
|
||||
assert(pre_val != c_rarg1, "smashed arg");
|
||||
__ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
|
||||
__ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), pre_val, thread);
|
||||
} else {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), pre_val, thread);
|
||||
}
|
||||
|
||||
__ pop(saved, sp);
|
||||
@ -698,7 +698,7 @@ void ShenandoahBarrierSetAssembler::generate_c1_pre_barrier_runtime_stub(StubAss
|
||||
__ bind(runtime);
|
||||
__ push_call_clobbered_registers();
|
||||
__ load_parameter(0, pre_val);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), pre_val, thread);
|
||||
__ pop_call_clobbered_registers();
|
||||
__ bind(done);
|
||||
|
||||
|
@ -144,9 +144,9 @@ void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler *masm, Dec
|
||||
// Invoke runtime.
|
||||
address jrt_address = nullptr;
|
||||
if (UseCompressedOops) {
|
||||
jrt_address = CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop_entry);
|
||||
jrt_address = CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop);
|
||||
} else {
|
||||
jrt_address = CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop_entry);
|
||||
jrt_address = CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop);
|
||||
}
|
||||
assert(jrt_address != nullptr, "jrt routine cannot be found");
|
||||
|
||||
@ -302,7 +302,7 @@ void ShenandoahBarrierSetAssembler::satb_write_barrier_impl(MacroAssembler *masm
|
||||
}
|
||||
|
||||
// Invoke runtime.
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, R16_thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), pre_val, R16_thread);
|
||||
|
||||
// Restore to-be-preserved registers.
|
||||
if (!preserve_gp_registers && preloaded_mode && pre_val->is_volatile()) {
|
||||
@ -906,7 +906,7 @@ void ShenandoahBarrierSetAssembler::generate_c1_pre_barrier_runtime_stub(StubAss
|
||||
__ push_frame_reg_args(nbytes_save, R11_tmp1);
|
||||
|
||||
// Invoke runtime.
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), R0_pre_val, R16_thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), R0_pre_val, R16_thread);
|
||||
|
||||
// Restore to-be-preserved registers.
|
||||
__ pop_frame();
|
||||
|
@ -70,10 +70,10 @@ void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, Dec
|
||||
|
||||
__ push_reg(saved_regs, sp);
|
||||
if (UseCompressedOops) {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop_entry),
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop),
|
||||
src, dst, count);
|
||||
} else {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop_entry), src, dst, count);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop), src, dst, count);
|
||||
}
|
||||
__ pop_reg(saved_regs, sp);
|
||||
__ bind(done);
|
||||
@ -165,9 +165,9 @@ void ShenandoahBarrierSetAssembler::satb_write_barrier_pre(MacroAssembler* masm,
|
||||
// expand_call should be passed true.
|
||||
if (expand_call) {
|
||||
assert(pre_val != c_rarg1, "smashed arg");
|
||||
__ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
|
||||
__ super_call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), pre_val, thread);
|
||||
} else {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), pre_val, thread);
|
||||
}
|
||||
|
||||
__ pop_reg(saved, sp);
|
||||
@ -645,7 +645,7 @@ void ShenandoahBarrierSetAssembler::generate_c1_pre_barrier_runtime_stub(StubAss
|
||||
__ bind(runtime);
|
||||
__ push_call_clobbered_registers();
|
||||
__ load_parameter(0, pre_val);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), pre_val, thread);
|
||||
__ pop_call_clobbered_registers();
|
||||
__ bind(done);
|
||||
|
||||
|
@ -163,12 +163,12 @@ void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, Dec
|
||||
assert(dst == rsi, "expected");
|
||||
assert(count == rdx, "expected");
|
||||
if (UseCompressedOops) {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop_entry),
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_narrow_oop),
|
||||
src, dst, count);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop_entry),
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::arraycopy_barrier_oop),
|
||||
src, dst, count);
|
||||
}
|
||||
|
||||
@ -296,9 +296,9 @@ void ShenandoahBarrierSetAssembler::satb_write_barrier_pre(MacroAssembler* masm,
|
||||
__ push(thread);
|
||||
__ push(pre_val);
|
||||
#endif
|
||||
__ MacroAssembler::call_VM_leaf_base(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), 2);
|
||||
__ MacroAssembler::call_VM_leaf_base(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), 2);
|
||||
} else {
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), LP64_ONLY(c_rarg0) NOT_LP64(pre_val), thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), LP64_ONLY(c_rarg0) NOT_LP64(pre_val), thread);
|
||||
}
|
||||
|
||||
NOT_LP64( __ pop(thread); )
|
||||
@ -925,7 +925,7 @@ void ShenandoahBarrierSetAssembler::generate_c1_pre_barrier_runtime_stub(StubAss
|
||||
|
||||
// load the pre-value
|
||||
__ load_parameter(0, rcx);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), rcx, thread);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), rcx, thread);
|
||||
|
||||
__ restore_live_registers(true);
|
||||
|
||||
|
@ -249,8 +249,9 @@ void ShenandoahBarrierSetC2::satb_write_barrier_pre(GraphKit* kit,
|
||||
} __ else_(); {
|
||||
|
||||
// logging buffer is full, call the runtime
|
||||
const TypeFunc *tf = ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type();
|
||||
__ make_leaf_call(tf, CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), "shenandoah_wb_pre", pre_val, tls);
|
||||
const TypeFunc *tf = ShenandoahBarrierSetC2::write_ref_field_pre_Type();
|
||||
__ make_leaf_call(tf, CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre), "shenandoah_wb_pre",
|
||||
pre_val, tls);
|
||||
} __ end_if(); // (!index)
|
||||
} __ end_if(); // (pre_val != nullptr)
|
||||
} __ end_if(); // (!marking)
|
||||
@ -268,12 +269,12 @@ void ShenandoahBarrierSetC2::satb_write_barrier_pre(GraphKit* kit,
|
||||
|
||||
bool ShenandoahBarrierSetC2::is_shenandoah_wb_pre_call(Node* call) {
|
||||
return call->is_CallLeaf() &&
|
||||
call->as_CallLeaf()->entry_point() == CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry);
|
||||
call->as_CallLeaf()->entry_point() == CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre);
|
||||
}
|
||||
|
||||
bool ShenandoahBarrierSetC2::is_shenandoah_clone_call(Node* call) {
|
||||
return call->is_CallLeaf() &&
|
||||
call->as_CallLeaf()->entry_point() == CAST_FROM_FN_PTR(address, ShenandoahRuntime::shenandoah_clone_barrier);
|
||||
call->as_CallLeaf()->entry_point() == CAST_FROM_FN_PTR(address, ShenandoahRuntime::clone_barrier);
|
||||
}
|
||||
|
||||
bool ShenandoahBarrierSetC2::is_shenandoah_lrb_call(Node* call) {
|
||||
@ -433,7 +434,7 @@ void ShenandoahBarrierSetC2::insert_pre_barrier(GraphKit* kit, Node* base_oop, N
|
||||
|
||||
#undef __
|
||||
|
||||
const TypeFunc* ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type() {
|
||||
const TypeFunc* ShenandoahBarrierSetC2::write_ref_field_pre_Type() {
|
||||
const Type **fields = TypeTuple::fields(2);
|
||||
fields[TypeFunc::Parms+0] = TypeInstPtr::NOTNULL; // original field value
|
||||
fields[TypeFunc::Parms+1] = TypeRawPtr::NOTNULL; // thread
|
||||
@ -446,7 +447,7 @@ const TypeFunc* ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type() {
|
||||
return TypeFunc::make(domain, range);
|
||||
}
|
||||
|
||||
const TypeFunc* ShenandoahBarrierSetC2::shenandoah_clone_barrier_Type() {
|
||||
const TypeFunc* ShenandoahBarrierSetC2::clone_barrier_Type() {
|
||||
const Type **fields = TypeTuple::fields(1);
|
||||
fields[TypeFunc::Parms+0] = TypeOopPtr::NOTNULL; // src oop
|
||||
const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+1, fields);
|
||||
@ -458,7 +459,7 @@ const TypeFunc* ShenandoahBarrierSetC2::shenandoah_clone_barrier_Type() {
|
||||
return TypeFunc::make(domain, range);
|
||||
}
|
||||
|
||||
const TypeFunc* ShenandoahBarrierSetC2::shenandoah_load_reference_barrier_Type() {
|
||||
const TypeFunc* ShenandoahBarrierSetC2::load_reference_barrier_Type() {
|
||||
const Type **fields = TypeTuple::fields(2);
|
||||
fields[TypeFunc::Parms+0] = TypeOopPtr::BOTTOM; // original field value
|
||||
fields[TypeFunc::Parms+1] = TypeRawPtr::BOTTOM; // original load address
|
||||
@ -797,11 +798,11 @@ void ShenandoahBarrierSetC2::clone_at_expansion(PhaseMacroExpand* phase, ArrayCo
|
||||
|
||||
// Heap is unstable, call into clone barrier stub
|
||||
Node* call = phase->make_leaf_call(unstable_ctrl, mem,
|
||||
ShenandoahBarrierSetC2::shenandoah_clone_barrier_Type(),
|
||||
CAST_FROM_FN_PTR(address, ShenandoahRuntime::shenandoah_clone_barrier),
|
||||
"shenandoah_clone",
|
||||
TypeRawPtr::BOTTOM,
|
||||
src_base);
|
||||
ShenandoahBarrierSetC2::clone_barrier_Type(),
|
||||
CAST_FROM_FN_PTR(address, ShenandoahRuntime::clone_barrier),
|
||||
"shenandoah_clone",
|
||||
TypeRawPtr::BOTTOM,
|
||||
src_base);
|
||||
call = phase->transform_later(call);
|
||||
|
||||
ctrl = phase->transform_later(new ProjNode(call, TypeFunc::Control));
|
||||
@ -976,7 +977,7 @@ void ShenandoahBarrierSetC2::verify_gc_barriers(Compile* compile, CompilePhase p
|
||||
|
||||
Node* ShenandoahBarrierSetC2::ideal_node(PhaseGVN* phase, Node* n, bool can_reshape) const {
|
||||
if (is_shenandoah_wb_pre_call(n)) {
|
||||
uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type()->domain()->cnt();
|
||||
uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_Type()->domain()->cnt();
|
||||
if (n->req() > cnt) {
|
||||
Node* addp = n->in(cnt);
|
||||
if (has_only_shenandoah_wb_pre_uses(addp)) {
|
||||
@ -1062,7 +1063,7 @@ bool ShenandoahBarrierSetC2::final_graph_reshaping(Compile* compile, Node* n, ui
|
||||
assert (n->is_Call(), "");
|
||||
CallNode *call = n->as_Call();
|
||||
if (ShenandoahBarrierSetC2::is_shenandoah_wb_pre_call(call)) {
|
||||
uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type()->domain()->cnt();
|
||||
uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_Type()->domain()->cnt();
|
||||
if (call->req() > cnt) {
|
||||
assert(call->req() == cnt + 1, "only one extra input");
|
||||
Node *addp = call->in(cnt);
|
||||
|
@ -93,9 +93,9 @@ public:
|
||||
|
||||
ShenandoahBarrierSetC2State* state() const;
|
||||
|
||||
static const TypeFunc* write_ref_field_pre_entry_Type();
|
||||
static const TypeFunc* shenandoah_clone_barrier_Type();
|
||||
static const TypeFunc* shenandoah_load_reference_barrier_Type();
|
||||
static const TypeFunc* write_ref_field_pre_Type();
|
||||
static const TypeFunc* clone_barrier_Type();
|
||||
static const TypeFunc* load_reference_barrier_Type();
|
||||
virtual bool has_load_barrier_nodes() const { return true; }
|
||||
|
||||
// This is the entry-point for the backend to perform accesses through the Access API.
|
||||
|
@ -995,7 +995,7 @@ void ShenandoahBarrierC2Support::call_lrb_stub(Node*& ctrl, Node*& val, Node* lo
|
||||
name = "load_reference_barrier_phantom";
|
||||
}
|
||||
}
|
||||
Node* call = new CallLeafNode(ShenandoahBarrierSetC2::shenandoah_load_reference_barrier_Type(), calladdr, name, TypeRawPtr::BOTTOM);
|
||||
Node* call = new CallLeafNode(ShenandoahBarrierSetC2::load_reference_barrier_Type(), calladdr, name, TypeRawPtr::BOTTOM);
|
||||
|
||||
call->init_req(TypeFunc::Control, ctrl);
|
||||
call->init_req(TypeFunc::I_O, phase->C->top());
|
||||
|
@ -31,22 +31,19 @@
|
||||
#include "oops/oop.inline.hpp"
|
||||
#include "utilities/copy.hpp"
|
||||
|
||||
void ShenandoahRuntime::arraycopy_barrier_oop_entry(oop* src, oop* dst, size_t length) {
|
||||
ShenandoahBarrierSet *bs = ShenandoahBarrierSet::barrier_set();
|
||||
bs->arraycopy_barrier(src, dst, length);
|
||||
}
|
||||
JRT_LEAF(void, ShenandoahRuntime::arraycopy_barrier_oop(oop* src, oop* dst, size_t length))
|
||||
ShenandoahBarrierSet::barrier_set()->arraycopy_barrier(src, dst, length);
|
||||
JRT_END
|
||||
|
||||
void ShenandoahRuntime::arraycopy_barrier_narrow_oop_entry(narrowOop* src, narrowOop* dst, size_t length) {
|
||||
ShenandoahBarrierSet *bs = ShenandoahBarrierSet::barrier_set();
|
||||
bs->arraycopy_barrier(src, dst, length);
|
||||
}
|
||||
JRT_LEAF(void, ShenandoahRuntime::arraycopy_barrier_narrow_oop(narrowOop* src, narrowOop* dst, size_t length))
|
||||
ShenandoahBarrierSet::barrier_set()->arraycopy_barrier(src, dst, length);
|
||||
JRT_END
|
||||
|
||||
// Shenandoah pre write barrier slowpath
|
||||
JRT_LEAF(void, ShenandoahRuntime::write_ref_field_pre_entry(oopDesc* orig, JavaThread *thread))
|
||||
JRT_LEAF(void, ShenandoahRuntime::write_ref_field_pre(oopDesc * orig, JavaThread * thread))
|
||||
assert(thread == JavaThread::current(), "pre-condition");
|
||||
assert(orig != nullptr, "should be optimized out");
|
||||
shenandoah_assert_correct(nullptr, orig);
|
||||
// store the original value that was in the field reference
|
||||
// Capture the original value that was in the field reference.
|
||||
assert(ShenandoahThreadLocalData::satb_mark_queue(thread).is_active(), "Shouldn't be here otherwise");
|
||||
SATBMarkQueue& queue = ShenandoahThreadLocalData::satb_mark_queue(thread);
|
||||
ShenandoahBarrierSet::satb_mark_queue_set().enqueue_known_active(queue, orig);
|
||||
@ -60,26 +57,24 @@ JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_strong_narrow(oopDe
|
||||
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))
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_weak(oopDesc* src, oop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<oop>(ON_WEAK_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_weak_narrow(oopDesc* src, narrowOop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<narrowOop>(ON_WEAK_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_phantom(oopDesc* src, oop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<oop>(ON_PHANTOM_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_phantom_narrow(oopDesc* src, narrowOop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<narrowOop>(ON_PHANTOM_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(void, ShenandoahRuntime::clone_barrier(oopDesc* src))
|
||||
oop s = oop(src);
|
||||
shenandoah_assert_correct(nullptr, s);
|
||||
ShenandoahBarrierSet::barrier_set()->clone_barrier(s);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_weak(oopDesc * src, oop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<oop>(ON_WEAK_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_weak_narrow(oopDesc * src, narrowOop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<narrowOop>(ON_WEAK_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_phantom(oopDesc * src, oop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<oop>(ON_PHANTOM_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
||||
JRT_LEAF(oopDesc*, ShenandoahRuntime::load_reference_barrier_phantom_narrow(oopDesc * src, narrowOop* load_addr))
|
||||
return (oopDesc*) ShenandoahBarrierSet::barrier_set()->load_reference_barrier<narrowOop>(ON_PHANTOM_OOP_REF, oop(src), load_addr);
|
||||
JRT_END
|
||||
|
@ -33,10 +33,10 @@ class oopDesc;
|
||||
|
||||
class ShenandoahRuntime : public AllStatic {
|
||||
public:
|
||||
static void arraycopy_barrier_oop_entry(oop* src, oop* dst, size_t length);
|
||||
static void arraycopy_barrier_narrow_oop_entry(narrowOop* src, narrowOop* dst, size_t length);
|
||||
static void arraycopy_barrier_oop(oop* src, oop* dst, size_t length);
|
||||
static void arraycopy_barrier_narrow_oop(narrowOop* src, narrowOop* dst, size_t length);
|
||||
|
||||
static void write_ref_field_pre_entry(oopDesc* orig, JavaThread* thread);
|
||||
static void write_ref_field_pre(oopDesc* orig, JavaThread* thread);
|
||||
|
||||
static oopDesc* load_reference_barrier_strong(oopDesc* src, oop* load_addr);
|
||||
static oopDesc* load_reference_barrier_strong_narrow(oopDesc* src, narrowOop* load_addr);
|
||||
@ -47,7 +47,7 @@ public:
|
||||
static oopDesc* load_reference_barrier_phantom(oopDesc* src, oop* load_addr);
|
||||
static oopDesc* load_reference_barrier_phantom_narrow(oopDesc* src, narrowOop* load_addr);
|
||||
|
||||
static void shenandoah_clone_barrier(oopDesc* src);
|
||||
static void clone_barrier(oopDesc* src);
|
||||
};
|
||||
|
||||
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHRUNTIME_HPP
|
||||
|
Loading…
x
Reference in New Issue
Block a user