10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef CPU_PPC_GC_G1_G1BARRIERSETASSEMBLER_PPC_HPP
26 #define CPU_PPC_GC_G1_G1BARRIERSETASSEMBLER_PPC_HPP
27
28 #include "asm/macroAssembler.hpp"
29 #include "gc/shared/modRefBarrierSetAssembler.hpp"
30
31 class LIR_Assembler;
32 class StubAssembler;
33 class G1PreBarrierStub;
34 class G1PostBarrierStub;
35
36 class G1BarrierSetAssembler: public ModRefBarrierSetAssembler {
37 protected:
38 virtual void gen_write_ref_array_pre_barrier(MacroAssembler* masm, DecoratorSet decorators, Register from, Register to, Register co
39 Register preserve1, Register preserve2);
40 virtual void gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, Register addr, Register count, Registe
41
42 void g1_write_barrier_pre(MacroAssembler* masm, DecoratorSet decorators, Register obj, RegisterOrConstant ind_or_offs, Register pre
43 Register tmp1, Register tmp2, bool needs_frame);
44 void g1_write_barrier_post(MacroAssembler* masm, DecoratorSet decorators, Register store_addr, Register new_val,
45 Register tmp1, Register tmp2, Register tmp3);
46
47 virtual void oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
48 Register base, RegisterOrConstant ind_or_offs, Register val,
49 Register tmp1, Register tmp2, Register tmp3, bool needs_frame);
50
51 public:
52 void gen_g1_pre_barrier_stub(LIR_Assembler* ce, G1PreBarrierStub* stub);
53 void gen_g1_post_barrier_stub(LIR_Assembler* ce, G1PostBarrierStub* stub);
54
55 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
56 void generate_c1_post_barrier_runtime_stub(StubAssembler* sasm);
57
58 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
59 Register base, RegisterOrConstant ind_or_offs, Register dst,
60 Register tmp1, Register tmp2, bool needs_frame, Label *is_null = NULL);
61
62 virtual void resolve_jobject(MacroAssembler* masm, Register value, Register tmp1, Register tmp2, bool needs_frame);
63 };
64
65 #endif // CPU_PPC_GC_G1_G1BARRIERSETASSEMBLER_PPC_HPP
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef CPU_PPC_GC_G1_G1BARRIERSETASSEMBLER_PPC_HPP
26 #define CPU_PPC_GC_G1_G1BARRIERSETASSEMBLER_PPC_HPP
27
28 #include "asm/macroAssembler.hpp"
29 #include "gc/shared/modRefBarrierSetAssembler.hpp"
30 #include "utilities/macros.hpp"
31
32 class LIR_Assembler;
33 class StubAssembler;
34 class G1PreBarrierStub;
35 class G1PostBarrierStub;
36
37 class G1BarrierSetAssembler: public ModRefBarrierSetAssembler {
38 protected:
39 virtual void gen_write_ref_array_pre_barrier(MacroAssembler* masm, DecoratorSet decorators, Register from, Register to, Register co
40 Register preserve1, Register preserve2);
41 virtual void gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, Register addr, Register count, Registe
42
43 void g1_write_barrier_pre(MacroAssembler* masm, DecoratorSet decorators, Register obj, RegisterOrConstant ind_or_offs, Register pre
44 Register tmp1, Register tmp2, bool needs_frame);
45 void g1_write_barrier_post(MacroAssembler* masm, DecoratorSet decorators, Register store_addr, Register new_val,
46 Register tmp1, Register tmp2, Register tmp3);
47
48 virtual void oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
49 Register base, RegisterOrConstant ind_or_offs, Register val,
50 Register tmp1, Register tmp2, Register tmp3, bool needs_frame);
51
52 public:
53 #ifdef COMPILER1
54 void gen_g1_pre_barrier_stub(LIR_Assembler* ce, G1PreBarrierStub* stub);
55 void gen_g1_post_barrier_stub(LIR_Assembler* ce, G1PostBarrierStub* stub);
56
57 void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
58 void generate_c1_post_barrier_runtime_stub(StubAssembler* sasm);
59 #endif
60
61 virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
62 Register base, RegisterOrConstant ind_or_offs, Register dst,
63 Register tmp1, Register tmp2, bool needs_frame, Label *is_null = NULL);
64
65 virtual void resolve_jobject(MacroAssembler* masm, Register value, Register tmp1, Register tmp2, bool needs_frame);
66 };
67
68 #endif // CPU_PPC_GC_G1_G1BARRIERSETASSEMBLER_PPC_HPP
|