Path: blob/master/src/hotspot/share/gc/z/zBarrierSetRuntime.cpp
40961 views
/*1* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223#include "precompiled.hpp"24#include "gc/z/zBarrier.inline.hpp"25#include "gc/z/zBarrierSetRuntime.hpp"26#include "oops/access.hpp"27#include "runtime/interfaceSupport.inline.hpp"2829JRT_LEAF(oopDesc*, ZBarrierSetRuntime::load_barrier_on_oop_field_preloaded(oopDesc* o, oop* p))30return ZBarrier::load_barrier_on_oop_field_preloaded(p, o);31JRT_END3233JRT_LEAF(oopDesc*, ZBarrierSetRuntime::weak_load_barrier_on_oop_field_preloaded(oopDesc* o, oop* p))34return ZBarrier::weak_load_barrier_on_oop_field_preloaded(p, o);35JRT_END3637JRT_LEAF(oopDesc*, ZBarrierSetRuntime::weak_load_barrier_on_weak_oop_field_preloaded(oopDesc* o, oop* p))38return ZBarrier::weak_load_barrier_on_weak_oop_field_preloaded(p, o);39JRT_END4041JRT_LEAF(oopDesc*, ZBarrierSetRuntime::weak_load_barrier_on_phantom_oop_field_preloaded(oopDesc* o, oop* p))42return ZBarrier::weak_load_barrier_on_phantom_oop_field_preloaded(p, o);43JRT_END4445JRT_LEAF(oopDesc*, ZBarrierSetRuntime::load_barrier_on_weak_oop_field_preloaded(oopDesc* o, oop* p))46return ZBarrier::load_barrier_on_weak_oop_field_preloaded(p, o);47JRT_END4849JRT_LEAF(oopDesc*, ZBarrierSetRuntime::load_barrier_on_phantom_oop_field_preloaded(oopDesc* o, oop* p))50return ZBarrier::load_barrier_on_phantom_oop_field_preloaded(p, o);51JRT_END5253JRT_LEAF(void, ZBarrierSetRuntime::load_barrier_on_oop_array(oop* p, size_t length))54ZBarrier::load_barrier_on_oop_array(p, length);55JRT_END5657JRT_LEAF(void, ZBarrierSetRuntime::clone(oopDesc* src, oopDesc* dst, size_t size))58HeapAccess<>::clone(src, dst, size);59JRT_END6061address ZBarrierSetRuntime::load_barrier_on_oop_field_preloaded_addr(DecoratorSet decorators) {62if (decorators & ON_PHANTOM_OOP_REF) {63if (decorators & AS_NO_KEEPALIVE) {64return weak_load_barrier_on_phantom_oop_field_preloaded_addr();65} else {66return load_barrier_on_phantom_oop_field_preloaded_addr();67}68} else if (decorators & ON_WEAK_OOP_REF) {69if (decorators & AS_NO_KEEPALIVE) {70return weak_load_barrier_on_weak_oop_field_preloaded_addr();71} else {72return load_barrier_on_weak_oop_field_preloaded_addr();73}74} else {75if (decorators & AS_NO_KEEPALIVE) {76return weak_load_barrier_on_oop_field_preloaded_addr();77} else {78return load_barrier_on_oop_field_preloaded_addr();79}80}81}8283address ZBarrierSetRuntime::load_barrier_on_oop_field_preloaded_addr() {84return reinterpret_cast<address>(load_barrier_on_oop_field_preloaded);85}8687address ZBarrierSetRuntime::load_barrier_on_weak_oop_field_preloaded_addr() {88return reinterpret_cast<address>(load_barrier_on_weak_oop_field_preloaded);89}9091address ZBarrierSetRuntime::load_barrier_on_phantom_oop_field_preloaded_addr() {92return reinterpret_cast<address>(load_barrier_on_phantom_oop_field_preloaded);93}9495address ZBarrierSetRuntime::weak_load_barrier_on_oop_field_preloaded_addr() {96return reinterpret_cast<address>(weak_load_barrier_on_oop_field_preloaded);97}9899address ZBarrierSetRuntime::weak_load_barrier_on_weak_oop_field_preloaded_addr() {100return reinterpret_cast<address>(weak_load_barrier_on_weak_oop_field_preloaded);101}102103address ZBarrierSetRuntime::weak_load_barrier_on_phantom_oop_field_preloaded_addr() {104return reinterpret_cast<address>(weak_load_barrier_on_phantom_oop_field_preloaded);105}106107address ZBarrierSetRuntime::load_barrier_on_oop_array_addr() {108return reinterpret_cast<address>(load_barrier_on_oop_array);109}110111address ZBarrierSetRuntime::clone_addr() {112return reinterpret_cast<address>(clone);113}114115116