src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.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  *
    62 
    62 
    63   void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp);
    63   void storeval_barrier_impl(MacroAssembler* masm, Register dst, Register tmp);
    64 
    64 
    65   address generate_shenandoah_lrb(StubCodeGenerator* cgen);
    65   address generate_shenandoah_lrb(StubCodeGenerator* cgen);
    66 
    66 
    67   void save_vector_registers(MacroAssembler* masm);
       
    68   void restore_vector_registers(MacroAssembler* masm);
       
    69 
       
    70 public:
    67 public:
    71   static address shenandoah_lrb();
    68   static address shenandoah_lrb();
    72 
    69 
    73   void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
    70   void storeval_barrier(MacroAssembler* masm, Register dst, Register tmp);
    74 #ifdef COMPILER1
    71 #ifdef COMPILER1
    75   void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
    72   void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub);
    76   void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
    73   void gen_load_reference_barrier_stub(LIR_Assembler* ce, ShenandoahLoadReferenceBarrierStub* stub);
    77   void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
    74   void generate_c1_pre_barrier_runtime_stub(StubAssembler* sasm);
       
    75   void generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm);
    78 #endif
    76 #endif
    79 
    77 
    80   void load_reference_barrier(MacroAssembler* masm, Register dst);
    78   void load_reference_barrier(MacroAssembler* masm, Register dst);
       
    79   void load_reference_barrier_native(MacroAssembler* masm, Register dst);
    81 
    80 
    82   void cmpxchg_oop(MacroAssembler* masm,
    81   void cmpxchg_oop(MacroAssembler* masm,
    83                    Register res, Address addr, Register oldval, Register newval,
    82                    Register res, Address addr, Register oldval, Register newval,
    84                    bool exchange, Register tmp1, Register tmp2);
    83                    bool exchange, Register tmp1, Register tmp2);
    85   virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    84   virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    86                                   Register src, Register dst, Register count);
    85                                   Register src, Register dst, Register count);
    87   virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
       
    88                                   Register src, Register dst, Register count);
       
    89   virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    86   virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    90                        Register dst, Address src, Register tmp1, Register tmp_thread);
    87                        Register dst, Address src, Register tmp1, Register tmp_thread);
    91   virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    88   virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    92                         Address dst, Register val, Register tmp1, Register tmp2);
    89                         Address dst, Register val, Register tmp1, Register tmp2);
       
    90   virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
       
    91                                              Register obj, Register tmp, Label& slowpath);
    93 
    92 
    94   virtual void barrier_stubs_init();
    93   virtual void barrier_stubs_init();
    95 
    94 
    96 };
    95 };
    97 
    96