< prev index next >

src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp

Print this page

155   Register _obj;
156   Address const _addr;
157   Register const _tmp1;
158   Register const _tmp2;
159   const bool _do_load;
160   const bool _narrow;
161   const bool _needs_load_ref_barrier;
162   const bool _needs_load_ref_weak_barrier;
163   const bool _needs_keep_alive_barrier;
164   bool _needs_far_jump;
165 
166   static void register_stub(ShenandoahBarrierStubC2* stub);
167 
168   int available_gp_registers();
169   bool is_live_register(Register reg);
170   bool is_special_register(Register reg);
171   Register select_temp_register(bool& selected_live, Register skip_reg1 = noreg, Register skip_reg2 = noreg);
172 
173   void maybe_far_jump_if_zero(MacroAssembler& masm, Register reg);
174 
175   void enter_if_gc_state(MacroAssembler& masm, const char test_state, Register tmp);









176 
177   void keepalive(MacroAssembler& masm, Label* L_done);
178   void lrb(MacroAssembler& masm);
179 
180   static void cardtable(MacroAssembler& masm, Address addr, Register tmp1, Register tmp2);
181 
182   address keepalive_runtime_entry_addr();
183   address lrb_runtime_entry_addr();
184 
185   static ShenandoahBarrierStubC2* create(const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow, bool do_load);
186   void post_init();
187 
188   ShenandoahBarrierStubC2(const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow, bool do_load) :
189     BarrierStubC2(node),
190     _obj(obj),
191     _addr(addr),
192     _tmp1(tmp1),
193     _tmp2(tmp2),
194     _do_load(do_load),
195     _narrow(narrow),

155   Register _obj;
156   Address const _addr;
157   Register const _tmp1;
158   Register const _tmp2;
159   const bool _do_load;
160   const bool _narrow;
161   const bool _needs_load_ref_barrier;
162   const bool _needs_load_ref_weak_barrier;
163   const bool _needs_keep_alive_barrier;
164   bool _needs_far_jump;
165 
166   static void register_stub(ShenandoahBarrierStubC2* stub);
167 
168   int available_gp_registers();
169   bool is_live_register(Register reg);
170   bool is_special_register(Register reg);
171   Register select_temp_register(bool& selected_live, Register skip_reg1 = noreg, Register skip_reg2 = noreg);
172 
173   void maybe_far_jump_if_zero(MacroAssembler& masm, Register reg);
174 
175   void patchable_jump(MacroAssembler& masm, const char gc_state, bool jump_when_state, Label* L_target);
176 
177   void patchable_jump_if_gc_state(MacroAssembler& masm, const char gc_state, Label* L_target) {
178     patchable_jump(masm, gc_state, true, L_target);
179   }
180   void patchable_jump_if_not_gc_state(MacroAssembler& masm, const char gc_state, Label* L_target) {
181     patchable_jump(masm, gc_state, false, L_target);
182   }
183 
184   void enter_if_gc_state(MacroAssembler& masm, const char test_state);
185 
186   void keepalive(MacroAssembler& masm, Label* L_done);
187   void lrb(MacroAssembler& masm);
188 
189   static void cardtable(MacroAssembler& masm, Address addr, Register tmp1, Register tmp2);
190 
191   address keepalive_runtime_entry_addr();
192   address lrb_runtime_entry_addr();
193 
194   static ShenandoahBarrierStubC2* create(const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow, bool do_load);
195   void post_init();
196 
197   ShenandoahBarrierStubC2(const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow, bool do_load) :
198     BarrierStubC2(node),
199     _obj(obj),
200     _addr(addr),
201     _tmp1(tmp1),
202     _tmp2(tmp2),
203     _do_load(do_load),
204     _narrow(narrow),
< prev index next >