< prev index next >

src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.hpp

Print this page

 23  * questions.
 24  *
 25  */
 26 
 27 #ifndef CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
 28 #define CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
 29 
 30 #include "asm/macroAssembler.hpp"
 31 #include "gc/shared/barrierSetAssembler.hpp"
 32 #include "gc/shenandoah/shenandoahBarrierSet.hpp"
 33 
 34 #ifdef COMPILER1
 35 
 36 class LIR_Assembler;
 37 class ShenandoahPreBarrierStub;
 38 class ShenandoahLoadReferenceBarrierStub;
 39 class StubAssembler;
 40 
 41 #endif
 42 






 43 class StubCodeGenerator;
 44 
 45 class ShenandoahBarrierSetAssembler: public BarrierSetAssembler {
 46 private:
 47 
 48   /* ==== Actual barrier implementations ==== */
 49   void satb_barrier_impl(MacroAssembler* masm, DecoratorSet decorators,
 50                          Register base, RegisterOrConstant ind_or_offs,
 51                          Register pre_val,
 52                          Register tmp1, Register tmp2,
 53                          MacroAssembler::PreservationLevel preservation_level);
 54 
 55   void card_barrier(MacroAssembler* masm,
 56                     Register base, RegisterOrConstant ind_or_offs,
 57                     Register tmp);
 58 
 59   void load_reference_barrier_impl(MacroAssembler* masm, DecoratorSet decorators,
 60                                    Register base, RegisterOrConstant ind_or_offs,
 61                                    Register dst,
 62                                    Register tmp1, Register tmp2,

108                                   Register preserve1, Register preserve2);
109   virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
110                                   Register dst, Register count,
111                                   Register preserve);
112 
113   virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
114                         Register base, RegisterOrConstant ind_or_offs, Register val,
115                         Register tmp1, Register tmp2, Register tmp3,
116                         MacroAssembler::PreservationLevel preservation_level);
117 
118   virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
119                        Register base, RegisterOrConstant ind_or_offs, Register dst,
120                        Register tmp1, Register tmp2,
121                        MacroAssembler::PreservationLevel preservation_level, Label* L_handle_null = nullptr);
122 
123   virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
124                                              Register obj, Register tmp, Label& slowpath);
125 
126   virtual void try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj,
127                                                Register tmp, Label& slow_path);














128 };
129 
130 #endif // CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP

 23  * questions.
 24  *
 25  */
 26 
 27 #ifndef CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
 28 #define CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
 29 
 30 #include "asm/macroAssembler.hpp"
 31 #include "gc/shared/barrierSetAssembler.hpp"
 32 #include "gc/shenandoah/shenandoahBarrierSet.hpp"
 33 
 34 #ifdef COMPILER1
 35 
 36 class LIR_Assembler;
 37 class ShenandoahPreBarrierStub;
 38 class ShenandoahLoadReferenceBarrierStub;
 39 class StubAssembler;
 40 
 41 #endif
 42 
 43 #ifdef COMPILER2
 44 
 45 class MachNode;
 46 
 47 #endif
 48 
 49 class StubCodeGenerator;
 50 
 51 class ShenandoahBarrierSetAssembler: public BarrierSetAssembler {
 52 private:
 53 
 54   /* ==== Actual barrier implementations ==== */
 55   void satb_barrier_impl(MacroAssembler* masm, DecoratorSet decorators,
 56                          Register base, RegisterOrConstant ind_or_offs,
 57                          Register pre_val,
 58                          Register tmp1, Register tmp2,
 59                          MacroAssembler::PreservationLevel preservation_level);
 60 
 61   void card_barrier(MacroAssembler* masm,
 62                     Register base, RegisterOrConstant ind_or_offs,
 63                     Register tmp);
 64 
 65   void load_reference_barrier_impl(MacroAssembler* masm, DecoratorSet decorators,
 66                                    Register base, RegisterOrConstant ind_or_offs,
 67                                    Register dst,
 68                                    Register tmp1, Register tmp2,

114                                   Register preserve1, Register preserve2);
115   virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
116                                   Register dst, Register count,
117                                   Register preserve);
118 
119   virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
120                         Register base, RegisterOrConstant ind_or_offs, Register val,
121                         Register tmp1, Register tmp2, Register tmp3,
122                         MacroAssembler::PreservationLevel preservation_level);
123 
124   virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
125                        Register base, RegisterOrConstant ind_or_offs, Register dst,
126                        Register tmp1, Register tmp2,
127                        MacroAssembler::PreservationLevel preservation_level, Label* L_handle_null = nullptr);
128 
129   virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,
130                                              Register obj, Register tmp, Label& slowpath);
131 
132   virtual void try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj,
133                                                Register tmp, Label& slow_path);
134 
135 #ifdef COMPILER2
136   // Entry points from Matcher
137   void load_c2(const MachNode* node, MacroAssembler* masm, Register dst, Register addr, int disp, Register tmp1, Register tmp2, bool narrow, bool acquire);
138 
139   void store_c2(const MachNode* node, MacroAssembler* masm,
140                 Register dst, int disp, bool dst_narrow, Register src, bool src_narrow, Register tmp1, Register tmp2, Register tmp3);
141 
142   void compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval,
143       Register newval, Register tmp1, Register tmp2, Register tmp3, bool exchange, bool narrow, bool weak, bool acquire);
144 
145   void get_and_set_c2(const MachNode* node, MacroAssembler* masm,
146                       Register preval, Register newval, Register addr, Register tmp1, Register tmp2, Register tmp3);
147 #endif // COMPILER2
148 };
149 
150 #endif // CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
< prev index next >