Path: blob/master/src/hotspot/cpu/ppc/gc/z/zBarrierSetAssembler_ppc.hpp
66646 views
/*1* Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.2* Copyright (c) 2021 SAP SE. All rights reserved.3* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.4*5* This code is free software; you can redistribute it and/or modify it6* under the terms of the GNU General Public License version 2 only, as7* published by the Free Software Foundation.8*9* This code is distributed in the hope that it will be useful, but WITHOUT10* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or11* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License12* version 2 for more details (a copy is included in the LICENSE file that13* accompanied this code).14*15* You should have received a copy of the GNU General Public License version16* 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 USA20* or visit www.oracle.com if you need additional information or have any21* questions.22*/2324#ifndef CPU_PPC_GC_Z_ZBARRIERSETASSEMBLER_PPC_HPP25#define CPU_PPC_GC_Z_ZBARRIERSETASSEMBLER_PPC_HPP2627#include "code/vmreg.hpp"28#include "oops/accessDecorators.hpp"29#ifdef COMPILER230#include "opto/optoreg.hpp"31#endif // COMPILER23233#ifdef COMPILER134class LIR_Assembler;35class LIR_OprDesc;36typedef LIR_OprDesc* LIR_Opr;37class StubAssembler;38class ZLoadBarrierStubC1;39#endif // COMPILER14041#ifdef COMPILER242class Node;43class ZLoadBarrierStubC2;44#endif // COMPILER24546class ZBarrierSetAssembler : public ZBarrierSetAssemblerBase {47public:48virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,49Register base, RegisterOrConstant ind_or_offs, Register dst,50Register tmp1, Register tmp2,51MacroAssembler::PreservationLevel preservation_level, Label *L_handle_null = NULL);5253#ifdef ASSERT54virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,55Register base, RegisterOrConstant ind_or_offs, Register val,56Register tmp1, Register tmp2, Register tmp3,57MacroAssembler::PreservationLevel preservation_level);58#endif // ASSERT5960virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type,61Register src, Register dst, Register count,62Register preserve1, Register preserve2);6364virtual void try_resolve_jobject_in_native(MacroAssembler* masm, Register dst, Register jni_env,65Register obj, Register tmp, Label& slowpath);6667#ifdef COMPILER168void generate_c1_load_barrier_test(LIR_Assembler* ce,69LIR_Opr ref) const;7071void generate_c1_load_barrier_stub(LIR_Assembler* ce,72ZLoadBarrierStubC1* stub) const;7374void generate_c1_load_barrier_runtime_stub(StubAssembler* sasm,75DecoratorSet decorators) const;76#endif // COMPILER17778#ifdef COMPILER279OptoReg::Name refine_register(const Node* node, OptoReg::Name opto_reg) const;8081void generate_c2_load_barrier_stub(MacroAssembler* masm, ZLoadBarrierStubC2* stub) const;82#endif // COMPILER283};8485#endif // CPU_AARCH64_GC_Z_ZBARRIERSETASSEMBLER_AARCH64_HPP868788