< prev index next > src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp
Print this page
const bool _narrow;
const bool _maybe_null;
const bool _needs_load_ref_barrier;
const bool _needs_load_ref_weak_barrier;
const bool _needs_keep_alive_barrier;
- const int _fastpath_branch_offset;
- bool _use_trampoline;
- Label _trampoline_entry;
- bool _do_emit_actual;
int _save_slots_idx;
static void register_stub(ShenandoahBarrierStubC2* stub);
static void inc_trampoline_stubs_count();
static int trampoline_stubs_count();
void lrb(MacroAssembler& masm, Register obj, Address addr, Register tmp);
address keepalive_runtime_entry_addr();
address lrb_runtime_entry_addr();
- void emit_code_actual(MacroAssembler& masm);
-
- void post_init(int offset);
-
public:
ShenandoahBarrierStubC2(const MachNode* node, Register obj, Address addr, bool narrow, bool do_load, int offset) :
BarrierStubC2(node),
_obj(obj),
_addr(addr),
_narrow(narrow),
_maybe_null(maybe_null(node)),
_needs_load_ref_barrier(needs_load_ref_barrier(node)),
_needs_load_ref_weak_barrier(needs_load_ref_barrier_weak(node)),
_needs_keep_alive_barrier(needs_keep_alive_barrier(node)),
- _fastpath_branch_offset(offset),
- _use_trampoline(),
- _trampoline_entry(),
- _do_emit_actual(),
_save_slots_idx(0) {
assert(!_narrow || is_heap_access(node), "Only heap accesses can be narrow");
- post_init(offset);
}
static bool is_heap_access(const MachNode* node) {
return (node->barrier_data() & ShenandoahBitNative) == 0;
}
< prev index next >