100
101 virtual void emit_code(LIR_Assembler* e);
102 virtual void visit(LIR_OpVisitState* visitor) {
103 // don't pass in the code emit info since it's processed in the fast path
104 visitor->do_slow_case();
105 visitor->do_input(_addr);
106 visitor->do_input(_new_val);
107 }
108 #ifndef PRODUCT
109 virtual void print_name(outputStream* out) const { out->print("G1PostBarrierStub"); }
110 #endif // PRODUCT
111 };
112
113 class CodeBlob;
114
115 class G1BarrierSetC1 : public ModRefBarrierSetC1 {
116 protected:
117 CodeBlob* _pre_barrier_c1_runtime_code_blob;
118 CodeBlob* _post_barrier_c1_runtime_code_blob;
119
120 virtual void pre_barrier(LIRGenerator* lir_generator, DecoratorSet decorators,
121 LIR_Opr addr_opr, LIR_Opr pre_val, CodeEmitInfo* info);
122 virtual void post_barrier(LIRGenerator* lir_generator, DecoratorSet decorators,
123 LIR_OprDesc* addr, LIR_OprDesc* new_val);
124
125 virtual void load_at_resolved(LIRGenerator* lir_generator, DecoratorSet decorators, BasicType type,
126 LIR_Opr addr, LIRItem& base, LIR_Opr offset, LIR_Opr result,
127 CodeEmitInfo* patch_info, CodeEmitInfo* load_emit_info);
128 public:
129 G1BarrierSetC1()
130 : _pre_barrier_c1_runtime_code_blob(NULL),
131 _post_barrier_c1_runtime_code_blob(NULL) {}
132
133 CodeBlob* pre_barrier_c1_runtime_code_blob() { return _pre_barrier_c1_runtime_code_blob; }
134 CodeBlob* post_barrier_c1_runtime_code_blob() { return _post_barrier_c1_runtime_code_blob; }
135
136 virtual void generate_c1_runtime_stubs(BufferBlob* buffer_blob);
137 };
138
139 #endif // SHARE_GC_G1_C1_G1BARRIERSETC1_HPP
|
100
101 virtual void emit_code(LIR_Assembler* e);
102 virtual void visit(LIR_OpVisitState* visitor) {
103 // don't pass in the code emit info since it's processed in the fast path
104 visitor->do_slow_case();
105 visitor->do_input(_addr);
106 visitor->do_input(_new_val);
107 }
108 #ifndef PRODUCT
109 virtual void print_name(outputStream* out) const { out->print("G1PostBarrierStub"); }
110 #endif // PRODUCT
111 };
112
113 class CodeBlob;
114
115 class G1BarrierSetC1 : public ModRefBarrierSetC1 {
116 protected:
117 CodeBlob* _pre_barrier_c1_runtime_code_blob;
118 CodeBlob* _post_barrier_c1_runtime_code_blob;
119
120 virtual void pre_barrier(LIRAccess& access, LIR_Opr addr_opr,
121 LIR_Opr pre_val, CodeEmitInfo* info);
122 virtual void post_barrier(LIRAccess& access, LIR_OprDesc* addr, LIR_OprDesc* new_val);
123
124 virtual void load_at_resolved(LIRAccess& access, LIR_Opr result);
125
126 public:
127 G1BarrierSetC1()
128 : _pre_barrier_c1_runtime_code_blob(NULL),
129 _post_barrier_c1_runtime_code_blob(NULL) {}
130
131 CodeBlob* pre_barrier_c1_runtime_code_blob() { return _pre_barrier_c1_runtime_code_blob; }
132 CodeBlob* post_barrier_c1_runtime_code_blob() { return _post_barrier_c1_runtime_code_blob; }
133
134 virtual void generate_c1_runtime_stubs(BufferBlob* buffer_blob);
135 };
136
137 #endif // SHARE_GC_G1_C1_G1BARRIERSETC1_HPP
|