< prev index next >

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

Print this page

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









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

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