< 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,

107                                   Register src, Register dst, Register count,
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_resolve_weak_handle(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);



















127 };
128 
129 #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,

113                                   Register src, Register dst, Register count,
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_resolve_weak_handle(MacroAssembler* masm, Register obj, Register tmp, Label& slow_path);
133 
134 #ifdef COMPILER2
135   // Entry points from Matcher
136   void load_c2(const MachNode* node, MacroAssembler* masm,
137                Register dst, Address addr);
138 
139   void store_c2(const MachNode* node, MacroAssembler* masm,
140                 Address dst, bool dst_narrow, Register src, bool src_narrow);
141 
142   void compare_and_set_c2(const MachNode* node, MacroAssembler* masm,
143                           Register res, Register addr, Register oldval,
144                           Register newval, bool exchange, bool narrow, bool weak);
145 
146   void get_and_set_c2(const MachNode* node, MacroAssembler* masm,
147                       Register preval, Register newval, Register addr);
148 
149   void card_barrier_c2(const MachNode* node, MacroAssembler* masm,
150                        Address addr);
151 #endif // COMPILER2
152 };
153 
154 #endif // CPU_PPC_GC_SHENANDOAH_SHENANDOAHBARRIERSETASSEMBLER_PPC_HPP
< prev index next >