src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 55076 785a12e0f89b
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
     1 /*
     1 /*
     2  * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
     2  * Copyright (c) 2018, 2019, Red Hat, Inc. All rights reserved.
     3  *
     3  *
     4  * This code is free software; you can redistribute it and/or modify it
     4  * This code is free software; you can redistribute it and/or modify it
     5  * under the terms of the GNU General Public License version 2 only, as
     5  * under the terms of the GNU General Public License version 2 only, as
     6  * published by the Free Software Foundation.
     6  * published by the Free Software Foundation.
     7  *
     7  *
    56 
    56 
    57   void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
    57   void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
    58   void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
    58   void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
    59   void load_reference_barrier(MacroAssembler* masm, Register dst, Register tmp);
    59   void load_reference_barrier(MacroAssembler* masm, Register dst, Register tmp);
    60   void load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Register tmp);
    60   void load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Register tmp);
       
    61   void load_reference_barrier_native(MacroAssembler* masm, Register dst, Register tmp);
    61 
    62 
    62   address generate_shenandoah_lrb(StubCodeGenerator* cgen);
    63   address generate_shenandoah_lrb(StubCodeGenerator* cgen);
    63 
    64 
    64 public:
    65 public:
    65   static address shenandoah_lrb();
    66   static address shenandoah_lrb();
    68 
    69 
    69 #ifdef COMPILER1
    70 #ifdef COMPILER1
    70   void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
    71   void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
    71   void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
    72   void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
    72   void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
    73   void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
       
    74   void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm);
    73 #endif
    75 #endif
    74 
    76 
    75   virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
    77   virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
    76                                   Register src, Register dst, Register count, RegSet saved_regs);
    78                                   Register src, Register dst, Register count, RegSet saved_regs);
    77   virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
       
    78                                   Register start, Register count, Register tmp, RegSet saved_regs);
       
    79   virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    79   virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    80                        Register dst, Address src, Register tmp1, Register tmp_thread);
    80                        Register dst, Address src, Register tmp1, Register tmp_thread);
    81   virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    81   virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    82                         Address dst, Register val, Register tmp1, Register tmp2);
    82                         Address dst, Register val, Register tmp1, Register tmp2);
       
    83   virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
       
    84                                              Register obj, Register tmp, Label& slowpath);
    83   void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
    85   void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
    84                    bool acquire, bool release, bool weak, bool is_cae, Register result);
    86                    bool acquire, bool release, bool weak, bool is_cae, Register result);
    85 
    87 
    86   virtual void barrier_stubs_init();
    88   virtual void barrier_stubs_init();
    87 };
    89 };