43 conc_instruction_and_data_patch
44 };
45
46 class BarrierSetAssembler: public CHeapObj<mtGC> {
47 public:
48 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
49 Register src, Register dst, Register count, Register preserve1, Register preserve2) {}
50 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
51 Register dst, Register count, Register preserve) {}
52
53 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
54 Register base, RegisterOrConstant ind_or_offs, Register val,
55 Register tmp1, Register tmp2, Register tmp3,
56 MacroAssembler::PreservationLevel preservation_level);
57
58 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
59 Register base, RegisterOrConstant ind_or_offs, Register dst,
60 Register tmp1, Register tmp2,
61 MacroAssembler::PreservationLevel preservation_level, Label *L_handle_null = nullptr);
62
63 virtual void resolve_jobject(MacroAssembler* masm, Register value,
64 Register tmp1, Register tmp2,
65 MacroAssembler::PreservationLevel preservation_level);
66 virtual void resolve_global_jobject(MacroAssembler* masm, Register value,
67 Register tmp1, Register tmp2,
68 MacroAssembler::PreservationLevel preservation_level);
69
70 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
71 Register obj, Register tmp, Label& slowpath);
72
73 // See AS_NO_KEEPALIVE for peek semantics
74 // weak_handle and obj may alias
75 virtual void try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj,
76 Register tmp, Label& slow_path);
77
78 virtual void barrier_stubs_init() {}
79
80 virtual NMethodPatchingType nmethod_patching_type() { return NMethodPatchingType::stw_instruction_and_data_patch; }
81
82 virtual void nmethod_entry_barrier(MacroAssembler* masm, Register tmp);
|
43 conc_instruction_and_data_patch
44 };
45
46 class BarrierSetAssembler: public CHeapObj<mtGC> {
47 public:
48 virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
49 Register src, Register dst, Register count, Register preserve1, Register preserve2) {}
50 virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
51 Register dst, Register count, Register preserve) {}
52
53 virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
54 Register base, RegisterOrConstant ind_or_offs, Register val,
55 Register tmp1, Register tmp2, Register tmp3,
56 MacroAssembler::PreservationLevel preservation_level);
57
58 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
59 Register base, RegisterOrConstant ind_or_offs, Register dst,
60 Register tmp1, Register tmp2,
61 MacroAssembler::PreservationLevel preservation_level, Label *L_handle_null = nullptr);
62
63 virtual void flat_field_copy(MacroAssembler* masm, DecoratorSet decorators,
64 Register src, Register dst, Register inline_layout_info);
65
66 virtual void resolve_jobject(MacroAssembler* masm, Register value,
67 Register tmp1, Register tmp2,
68 MacroAssembler::PreservationLevel preservation_level);
69 virtual void resolve_global_jobject(MacroAssembler* masm, Register value,
70 Register tmp1, Register tmp2,
71 MacroAssembler::PreservationLevel preservation_level);
72
73 virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
74 Register obj, Register tmp, Label& slowpath);
75
76 // See AS_NO_KEEPALIVE for peek semantics
77 // weak_handle and obj may alias
78 virtual void try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj,
79 Register tmp, Label& slow_path);
80
81 virtual void barrier_stubs_init() {}
82
83 virtual NMethodPatchingType nmethod_patching_type() { return NMethodPatchingType::stw_instruction_and_data_patch; }
84
85 virtual void nmethod_entry_barrier(MacroAssembler* masm, Register tmp);
|