< prev index next >

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

Print this page

153 
154 class ShenandoahBarrierStubC2 : public BarrierStubC2 {
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),

153 
154 class ShenandoahBarrierStubC2 : public BarrierStubC2 {
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, Label* L_target);
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),
< prev index next >