All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jdk.internal.misc.ScopedMemoryAccess Maven / Gradle / Ivy

There is a newer version: 17.alpha.0.57
Show newest version
/*
 * Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package jdk.internal.misc;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.ref.Reference;
import java.io.FileDescriptor;
import java.nio.Buffer;
import java.nio.ByteBuffer;

import jdk.internal.access.JavaNioAccess;
import jdk.internal.access.SharedSecrets;
import jdk.internal.access.foreign.MemorySegmentProxy;
import jdk.internal.util.ArraysSupport;
import jdk.internal.vm.annotation.ForceInline;
import jdk.internal.vm.vector.VectorSupport;


/**
 * This class defines low-level methods to access on-heap and off-heap memory. The methods in this class
 * can be thought of as thin wrappers around methods provided in the {@link Unsafe} class. All the methods in this
 * class, accept one or more {@link Scope} parameter, which is used to validate as to whether access to memory
 * can be performed in a safe fashion - more specifically, to ensure that the memory being accessed has not
 * already been released (which would result in a hard VM crash).
 * 

* Accessing and releasing memory from a single thread is not problematic - after all, a given thread cannot, * at the same time, access a memory region and free it. But ensuring correctness of memory access * when multiple threads are involved is much trickier, as there can be cases where a thread is accessing * a memory region while another thread is releasing it. *

* This class provides tools to manage races when multiple threads are accessing and/or releasing the same memory * region concurrently. More specifically, when a thread wants to release a memory region, it should call the * {@link #closeScope(jdk.internal.misc.ScopedMemoryAccess.Scope)} method provided by this class. This method initiates * thread-local handshakes with all the other VM threads, which are then stopped one by one. If any thread is found * accessing memory that is associated to the very scope object being closed, that thread execution is asynchronously * interrupted with a {@link Scope.ScopedAccessError}. *

* This synchronization strategy relies on the idea that accessing memory is atomic with respect to checking the * validity of the scope associated with that memory region - that is, a thread that wants to perform memory access will be * suspended either before a scope check or after the memory access. To ensure this atomicity, * all methods in this class are marked with the special {@link Scoped} annotation, which is recognized by the VM, * and used during the thread-local handshake to detect (and stop) threads performing potentially problematic memory access * operations. Additionally, to make sure that the scope object(s) of the memory being accessed is always * reachable during an access operation, all the methods in this class add reachability fences around the underlying * unsafe access. *

* This form of synchronization allows APIs to use plain memory access without any other form of synchronization * which might be deemed to expensive; in other words, this approach prioritizes the performance of memory access over * that of releasing a shared memory resource. */ public class ScopedMemoryAccess { private static final Unsafe UNSAFE = Unsafe.getUnsafe(); private static native void registerNatives(); static { registerNatives(); } public boolean closeScope(Scope scope) { return closeScope0(scope, Scope.ScopedAccessError.INSTANCE); } native boolean closeScope0(Scope scope, Scope.ScopedAccessError exception); private ScopedMemoryAccess() {} private static final ScopedMemoryAccess theScopedMemoryAccess = new ScopedMemoryAccess(); public static ScopedMemoryAccess getScopedMemoryAccess() { return theScopedMemoryAccess; } /** * Scope interface used during scoped memory access operations. A scope can be thought of as an object * which embodies the temporal checks associated with a given memory region. */ public interface Scope { interface Handle { Scope scope(); } void checkValidState(); Thread ownerThread(); boolean isImplicit(); Handle acquire(); void release(Handle handle); /** * Error thrown when memory access fails because the memory has already been released. * Note: for performance reasons, this exception is never created by client; instead a shared instance * is thrown (sometimes, this instance can be thrown asynchronously inside VM code). For this reason, * it is important for clients to always catch this exception and throw a regular exception instead * (which contains full stack information). */ final class ScopedAccessError extends Error { private ScopedAccessError() { super("Attempt to access an already released memory resource", null, false, false); } static final long serialVersionUID = 1L; public static final ScopedAccessError INSTANCE = new ScopedAccessError(); } } @Target({ElementType.METHOD, ElementType.CONSTRUCTOR}) @Retention(RetentionPolicy.RUNTIME) @interface Scoped { } // bulk ops @ForceInline public void copyMemory(Scope srcScope, Scope dstScope, Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes) { try { copyMemoryInternal(srcScope, dstScope, srcBase, srcOffset, destBase, destOffset, bytes); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void copyMemoryInternal(Scope srcScope, Scope dstScope, Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes) { try { if (srcScope != null) { srcScope.checkValidState(); } if (dstScope != null) { dstScope.checkValidState(); } UNSAFE.copyMemory(srcBase, srcOffset, destBase, destOffset, bytes); } finally { Reference.reachabilityFence(srcScope); Reference.reachabilityFence(dstScope); } } @ForceInline public void copySwapMemory(Scope srcScope, Scope dstScope, Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes, long elemSize) { try { copySwapMemoryInternal(srcScope, dstScope, srcBase, srcOffset, destBase, destOffset, bytes, elemSize); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void copySwapMemoryInternal(Scope srcScope, Scope dstScope, Object srcBase, long srcOffset, Object destBase, long destOffset, long bytes, long elemSize) { try { if (srcScope != null) { srcScope.checkValidState(); } if (dstScope != null) { dstScope.checkValidState(); } UNSAFE.copySwapMemory(srcBase, srcOffset, destBase, destOffset, bytes, elemSize); } finally { Reference.reachabilityFence(srcScope); Reference.reachabilityFence(dstScope); } } @ForceInline public void setMemory(Scope scope, Object o, long offset, long bytes, byte value) { try { setMemoryInternal(scope, o, offset, bytes, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void setMemoryInternal(Scope scope, Object o, long offset, long bytes, byte value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.setMemory(o, offset, bytes, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int vectorizedMismatch(Scope aScope, Scope bScope, Object a, long aOffset, Object b, long bOffset, int length, int log2ArrayIndexScale) { try { return vectorizedMismatchInternal(aScope, bScope, a, aOffset, b, bOffset, length, log2ArrayIndexScale); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int vectorizedMismatchInternal(Scope aScope, Scope bScope, Object a, long aOffset, Object b, long bOffset, int length, int log2ArrayIndexScale) { try { if (aScope != null) { aScope.checkValidState(); } if (bScope != null) { bScope.checkValidState(); } return ArraysSupport.vectorizedMismatch(a, aOffset, b, bOffset, length, log2ArrayIndexScale); } finally { Reference.reachabilityFence(aScope); Reference.reachabilityFence(bScope); } } @ForceInline public boolean isLoaded(Scope scope, long address, boolean isSync, long size) { try { return isLoadedInternal(scope, address, isSync, size); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped public boolean isLoadedInternal(Scope scope, long address, boolean isSync, long size) { try { if (scope != null) { scope.checkValidState(); } return SharedSecrets.getJavaNioAccess().isLoaded(address, isSync, size); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void load(Scope scope, long address, boolean isSync, long size) { try { loadInternal(scope, address, isSync, size); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped public void loadInternal(Scope scope, long address, boolean isSync, long size) { try { if (scope != null) { scope.checkValidState(); } SharedSecrets.getJavaNioAccess().load(address, isSync, size); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void unload(Scope scope, long address, boolean isSync, long size) { try { unloadInternal(scope, address, isSync, size); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped public void unloadInternal(Scope scope, long address, boolean isSync, long size) { try { if (scope != null) { scope.checkValidState(); } SharedSecrets.getJavaNioAccess().unload(address, isSync, size); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void force(Scope scope, FileDescriptor fd, long address, boolean isSync, long index, long length) { try { forceInternal(scope, fd, address, isSync, index, length); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped public void forceInternal(Scope scope, FileDescriptor fd, long address, boolean isSync, long index, long length) { try { if (scope != null) { scope.checkValidState(); } SharedSecrets.getJavaNioAccess().force(fd, address, isSync, index, length); } finally { Reference.reachabilityFence(scope); } } // ByteBuffer vector access ops // Buffer access constants, to be initalized when required. // Avoids a null value for NIO_ACCESS, due to class initalization dependencies static final class BufferAccess { // Buffer.address static final long BUFFER_ADDRESS = UNSAFE.objectFieldOffset(Buffer.class, "address"); // ByteBuffer.hb static final long BYTE_BUFFER_HB = UNSAFE.objectFieldOffset(ByteBuffer.class, "hb"); @ForceInline static Object bufferBase(ByteBuffer bb) { return UNSAFE.getReference(bb, BYTE_BUFFER_HB); } @ForceInline static long bufferAddress(ByteBuffer bb, long offset) { return UNSAFE.getLong(bb, BUFFER_ADDRESS) + offset; } static final JavaNioAccess NIO_ACCESS = SharedSecrets.getJavaNioAccess(); @ForceInline static ScopedMemoryAccess.Scope scope(ByteBuffer bb) { MemorySegmentProxy segmentProxy = NIO_ACCESS.bufferSegment(bb); return segmentProxy != null ? segmentProxy.scope() : null; } } @ForceInline public static , E, S extends VectorSupport.VectorSpecies> V loadFromByteBuffer(Class vmClass, Class e, int length, ByteBuffer bb, int offset, S s, VectorSupport.LoadOperation defaultImpl) { try { return loadFromByteBufferScoped( BufferAccess.scope(bb), vmClass, e, length, bb, offset, s, defaultImpl); } catch (ScopedMemoryAccess.Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @Scoped @ForceInline private static , E, S extends VectorSupport.VectorSpecies> V loadFromByteBufferScoped(ScopedMemoryAccess.Scope scope, Class vmClass, Class e, int length, ByteBuffer bb, int offset, S s, VectorSupport.LoadOperation defaultImpl) { try { if (scope != null) { scope.checkValidState(); } return VectorSupport.load(vmClass, e, length, BufferAccess.bufferBase(bb), BufferAccess.bufferAddress(bb, offset), bb, offset, s, defaultImpl); } finally { Reference.reachabilityFence(scope); } } @ForceInline public static , E> void storeIntoByteBuffer(Class vmClass, Class e, int length, V v, ByteBuffer bb, int offset, VectorSupport.StoreVectorOperation defaultImpl) { try { storeIntoByteBufferScoped( BufferAccess.scope(bb), vmClass, e, length, v, bb, offset, defaultImpl); } catch (ScopedMemoryAccess.Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @Scoped @ForceInline private static , E> void storeIntoByteBufferScoped(ScopedMemoryAccess.Scope scope, Class vmClass, Class e, int length, V v, ByteBuffer bb, int offset, VectorSupport.StoreVectorOperation defaultImpl) { try { if (scope != null) { scope.checkValidState(); } VectorSupport.store(vmClass, e, length, BufferAccess.bufferBase(bb), BufferAccess.bufferAddress(bb, offset), v, bb, offset, defaultImpl); } finally { Reference.reachabilityFence(scope); } } // typed-ops here // Note: all the accessor methods defined below take advantage of argument type profiling // (see src/hotspot/share/oops/methodData.cpp) which greatly enhances performance when the same accessor // method is used repeatedly with different 'base' objects. @ForceInline public byte getByte(Scope scope, Object base, long offset) { try { return getByteInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getByteInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getByte(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putByte(Scope scope, Object base, long offset, byte value) { try { putByteInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putByteInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putByte(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getByteVolatile(Scope scope, Object base, long offset) { try { return getByteVolatileInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getByteVolatileInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getByteVolatile(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putByteVolatile(Scope scope, Object base, long offset, byte value) { try { putByteVolatileInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putByteVolatileInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putByteVolatile(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getByteAcquire(Scope scope, Object base, long offset) { try { return getByteAcquireInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getByteAcquireInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getByteAcquire(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putByteRelease(Scope scope, Object base, long offset, byte value) { try { putByteReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putByteReleaseInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putByteRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getByteOpaque(Scope scope, Object base, long offset) { try { return getByteOpaqueInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getByteOpaqueInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getByteOpaque(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putByteOpaque(Scope scope, Object base, long offset, byte value) { try { putByteOpaqueInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putByteOpaqueInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putByteOpaque(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndAddByte(Scope scope, Object base, long offset, byte delta) { try { return getAndAddByteInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndAddByteInternal(Scope scope, Object base, long offset, byte delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddByte(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndAddByteAcquire(Scope scope, Object base, long offset, byte delta) { try { return getAndAddByteAcquireInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndAddByteAcquireInternal(Scope scope, Object base, long offset, byte delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddByteAcquire(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndAddByteRelease(Scope scope, Object base, long offset, byte delta) { try { return getAndAddByteReleaseInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndAddByteReleaseInternal(Scope scope, Object base, long offset, byte delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddByteRelease(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseOrByte(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseOrByteInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseOrByteInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrByte(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseOrByteAcquire(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseOrByteAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseOrByteAcquireInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrByteAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseOrByteRelease(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseOrByteReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseOrByteReleaseInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrByteRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseAndByte(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseAndByteInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseAndByteInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndByte(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseAndByteAcquire(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseAndByteAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseAndByteAcquireInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndByteAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseAndByteRelease(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseAndByteReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseAndByteReleaseInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndByteRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseXorByte(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseXorByteInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseXorByteInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorByte(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseXorByteAcquire(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseXorByteAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseXorByteAcquireInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorByteAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public byte getAndBitwiseXorByteRelease(Scope scope, Object base, long offset, byte value) { try { return getAndBitwiseXorByteReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private byte getAndBitwiseXorByteReleaseInternal(Scope scope, Object base, long offset, byte value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorByteRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getShort(Scope scope, Object base, long offset) { try { return getShortInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getShortInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getShort(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putShort(Scope scope, Object base, long offset, short value) { try { putShortInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putShortInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putShort(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getShortUnaligned(Scope scope, Object base, long offset, boolean be) { try { return getShortUnalignedInternal(scope, base, offset, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getShortUnalignedInternal(Scope scope, Object base, long offset, boolean be) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getShortUnaligned(base, offset, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putShortUnaligned(Scope scope, Object base, long offset, short value, boolean be) { try { putShortUnalignedInternal(scope, base, offset, value, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putShortUnalignedInternal(Scope scope, Object base, long offset, short value, boolean be) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putShortUnaligned(base, offset, value, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getShortVolatile(Scope scope, Object base, long offset) { try { return getShortVolatileInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getShortVolatileInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getShortVolatile(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putShortVolatile(Scope scope, Object base, long offset, short value) { try { putShortVolatileInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putShortVolatileInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putShortVolatile(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getShortAcquire(Scope scope, Object base, long offset) { try { return getShortAcquireInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getShortAcquireInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getShortAcquire(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putShortRelease(Scope scope, Object base, long offset, short value) { try { putShortReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putShortReleaseInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putShortRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getShortOpaque(Scope scope, Object base, long offset) { try { return getShortOpaqueInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getShortOpaqueInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getShortOpaque(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putShortOpaque(Scope scope, Object base, long offset, short value) { try { putShortOpaqueInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putShortOpaqueInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putShortOpaque(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndAddShort(Scope scope, Object base, long offset, short delta) { try { return getAndAddShortInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndAddShortInternal(Scope scope, Object base, long offset, short delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddShort(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndAddShortAcquire(Scope scope, Object base, long offset, short delta) { try { return getAndAddShortAcquireInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndAddShortAcquireInternal(Scope scope, Object base, long offset, short delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddShortAcquire(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndAddShortRelease(Scope scope, Object base, long offset, short delta) { try { return getAndAddShortReleaseInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndAddShortReleaseInternal(Scope scope, Object base, long offset, short delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddShortRelease(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseOrShort(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseOrShortInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseOrShortInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrShort(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseOrShortAcquire(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseOrShortAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseOrShortAcquireInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrShortAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseOrShortRelease(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseOrShortReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseOrShortReleaseInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrShortRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseAndShort(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseAndShortInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseAndShortInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndShort(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseAndShortAcquire(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseAndShortAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseAndShortAcquireInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndShortAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseAndShortRelease(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseAndShortReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseAndShortReleaseInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndShortRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseXorShort(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseXorShortInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseXorShortInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorShort(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseXorShortAcquire(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseXorShortAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseXorShortAcquireInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorShortAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public short getAndBitwiseXorShortRelease(Scope scope, Object base, long offset, short value) { try { return getAndBitwiseXorShortReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private short getAndBitwiseXorShortReleaseInternal(Scope scope, Object base, long offset, short value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorShortRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getChar(Scope scope, Object base, long offset) { try { return getCharInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getCharInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getChar(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putChar(Scope scope, Object base, long offset, char value) { try { putCharInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putCharInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putChar(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getCharUnaligned(Scope scope, Object base, long offset, boolean be) { try { return getCharUnalignedInternal(scope, base, offset, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getCharUnalignedInternal(Scope scope, Object base, long offset, boolean be) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getCharUnaligned(base, offset, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putCharUnaligned(Scope scope, Object base, long offset, char value, boolean be) { try { putCharUnalignedInternal(scope, base, offset, value, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putCharUnalignedInternal(Scope scope, Object base, long offset, char value, boolean be) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putCharUnaligned(base, offset, value, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getCharVolatile(Scope scope, Object base, long offset) { try { return getCharVolatileInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getCharVolatileInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getCharVolatile(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putCharVolatile(Scope scope, Object base, long offset, char value) { try { putCharVolatileInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putCharVolatileInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putCharVolatile(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getCharAcquire(Scope scope, Object base, long offset) { try { return getCharAcquireInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getCharAcquireInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getCharAcquire(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putCharRelease(Scope scope, Object base, long offset, char value) { try { putCharReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putCharReleaseInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putCharRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getCharOpaque(Scope scope, Object base, long offset) { try { return getCharOpaqueInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getCharOpaqueInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getCharOpaque(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putCharOpaque(Scope scope, Object base, long offset, char value) { try { putCharOpaqueInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putCharOpaqueInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putCharOpaque(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndAddChar(Scope scope, Object base, long offset, char delta) { try { return getAndAddCharInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndAddCharInternal(Scope scope, Object base, long offset, char delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddChar(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndAddCharAcquire(Scope scope, Object base, long offset, char delta) { try { return getAndAddCharAcquireInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndAddCharAcquireInternal(Scope scope, Object base, long offset, char delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddCharAcquire(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndAddCharRelease(Scope scope, Object base, long offset, char delta) { try { return getAndAddCharReleaseInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndAddCharReleaseInternal(Scope scope, Object base, long offset, char delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddCharRelease(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseOrChar(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseOrCharInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseOrCharInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrChar(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseOrCharAcquire(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseOrCharAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseOrCharAcquireInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrCharAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseOrCharRelease(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseOrCharReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseOrCharReleaseInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrCharRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseAndChar(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseAndCharInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseAndCharInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndChar(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseAndCharAcquire(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseAndCharAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseAndCharAcquireInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndCharAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseAndCharRelease(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseAndCharReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseAndCharReleaseInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndCharRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseXorChar(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseXorCharInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseXorCharInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorChar(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseXorCharAcquire(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseXorCharAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseXorCharAcquireInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorCharAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public char getAndBitwiseXorCharRelease(Scope scope, Object base, long offset, char value) { try { return getAndBitwiseXorCharReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private char getAndBitwiseXorCharReleaseInternal(Scope scope, Object base, long offset, char value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorCharRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getInt(Scope scope, Object base, long offset) { try { return getIntInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getIntInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getInt(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putInt(Scope scope, Object base, long offset, int value) { try { putIntInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putIntInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putInt(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getIntUnaligned(Scope scope, Object base, long offset, boolean be) { try { return getIntUnalignedInternal(scope, base, offset, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getIntUnalignedInternal(Scope scope, Object base, long offset, boolean be) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getIntUnaligned(base, offset, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putIntUnaligned(Scope scope, Object base, long offset, int value, boolean be) { try { putIntUnalignedInternal(scope, base, offset, value, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putIntUnalignedInternal(Scope scope, Object base, long offset, int value, boolean be) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putIntUnaligned(base, offset, value, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getIntVolatile(Scope scope, Object base, long offset) { try { return getIntVolatileInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getIntVolatileInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getIntVolatile(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putIntVolatile(Scope scope, Object base, long offset, int value) { try { putIntVolatileInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putIntVolatileInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putIntVolatile(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getIntAcquire(Scope scope, Object base, long offset) { try { return getIntAcquireInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getIntAcquireInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getIntAcquire(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putIntRelease(Scope scope, Object base, long offset, int value) { try { putIntReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putIntReleaseInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putIntRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getIntOpaque(Scope scope, Object base, long offset) { try { return getIntOpaqueInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getIntOpaqueInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getIntOpaque(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putIntOpaque(Scope scope, Object base, long offset, int value) { try { putIntOpaqueInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putIntOpaqueInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putIntOpaque(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean compareAndSetInt(Scope scope, Object base, long offset, int expected, int value) { try { return compareAndSetIntInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean compareAndSetIntInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndSetInt(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int compareAndExchangeInt(Scope scope, Object base, long offset, int expected, int value) { try { return compareAndExchangeIntInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int compareAndExchangeIntInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeInt(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int compareAndExchangeIntAcquire(Scope scope, Object base, long offset, int expected, int value) { try { return compareAndExchangeIntAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int compareAndExchangeIntAcquireInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeIntAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int compareAndExchangeIntRelease(Scope scope, Object base, long offset, int expected, int value) { try { return compareAndExchangeIntReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int compareAndExchangeIntReleaseInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeIntRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetIntPlain(Scope scope, Object base, long offset, int expected, int value) { try { return weakCompareAndSetIntPlainInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetIntPlainInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetIntPlain(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetInt(Scope scope, Object base, long offset, int expected, int value) { try { return weakCompareAndSetIntInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetIntInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetInt(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetIntAcquire(Scope scope, Object base, long offset, int expected, int value) { try { return weakCompareAndSetIntAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetIntAcquireInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetIntAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetIntRelease(Scope scope, Object base, long offset, int expected, int value) { try { return weakCompareAndSetIntReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetIntReleaseInternal(Scope scope, Object base, long offset, int expected, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetIntRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndSetInt(Scope scope, Object base, long offset, int value) { try { return getAndSetIntInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndSetIntInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetInt(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndSetIntAcquire(Scope scope, Object base, long offset, int value) { try { return getAndSetIntAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndSetIntAcquireInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetIntAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndSetIntRelease(Scope scope, Object base, long offset, int value) { try { return getAndSetIntReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndSetIntReleaseInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetIntRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndAddInt(Scope scope, Object base, long offset, int delta) { try { return getAndAddIntInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndAddIntInternal(Scope scope, Object base, long offset, int delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddInt(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndAddIntAcquire(Scope scope, Object base, long offset, int delta) { try { return getAndAddIntAcquireInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndAddIntAcquireInternal(Scope scope, Object base, long offset, int delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddIntAcquire(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndAddIntRelease(Scope scope, Object base, long offset, int delta) { try { return getAndAddIntReleaseInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndAddIntReleaseInternal(Scope scope, Object base, long offset, int delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddIntRelease(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseOrInt(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseOrIntInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseOrIntInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrInt(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseOrIntAcquire(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseOrIntAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseOrIntAcquireInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrIntAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseOrIntRelease(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseOrIntReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseOrIntReleaseInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrIntRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseAndInt(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseAndIntInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseAndIntInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndInt(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseAndIntAcquire(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseAndIntAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseAndIntAcquireInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndIntAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseAndIntRelease(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseAndIntReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseAndIntReleaseInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndIntRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseXorInt(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseXorIntInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseXorIntInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorInt(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseXorIntAcquire(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseXorIntAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseXorIntAcquireInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorIntAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public int getAndBitwiseXorIntRelease(Scope scope, Object base, long offset, int value) { try { return getAndBitwiseXorIntReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private int getAndBitwiseXorIntReleaseInternal(Scope scope, Object base, long offset, int value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorIntRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getLong(Scope scope, Object base, long offset) { try { return getLongInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getLongInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getLong(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putLong(Scope scope, Object base, long offset, long value) { try { putLongInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putLongInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putLong(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getLongUnaligned(Scope scope, Object base, long offset, boolean be) { try { return getLongUnalignedInternal(scope, base, offset, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getLongUnalignedInternal(Scope scope, Object base, long offset, boolean be) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getLongUnaligned(base, offset, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putLongUnaligned(Scope scope, Object base, long offset, long value, boolean be) { try { putLongUnalignedInternal(scope, base, offset, value, be); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putLongUnalignedInternal(Scope scope, Object base, long offset, long value, boolean be) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putLongUnaligned(base, offset, value, be); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getLongVolatile(Scope scope, Object base, long offset) { try { return getLongVolatileInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getLongVolatileInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getLongVolatile(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putLongVolatile(Scope scope, Object base, long offset, long value) { try { putLongVolatileInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putLongVolatileInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putLongVolatile(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getLongAcquire(Scope scope, Object base, long offset) { try { return getLongAcquireInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getLongAcquireInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getLongAcquire(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putLongRelease(Scope scope, Object base, long offset, long value) { try { putLongReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putLongReleaseInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putLongRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getLongOpaque(Scope scope, Object base, long offset) { try { return getLongOpaqueInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getLongOpaqueInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getLongOpaque(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putLongOpaque(Scope scope, Object base, long offset, long value) { try { putLongOpaqueInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putLongOpaqueInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putLongOpaque(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean compareAndSetLong(Scope scope, Object base, long offset, long expected, long value) { try { return compareAndSetLongInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean compareAndSetLongInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndSetLong(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long compareAndExchangeLong(Scope scope, Object base, long offset, long expected, long value) { try { return compareAndExchangeLongInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long compareAndExchangeLongInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeLong(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long compareAndExchangeLongAcquire(Scope scope, Object base, long offset, long expected, long value) { try { return compareAndExchangeLongAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long compareAndExchangeLongAcquireInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeLongAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long compareAndExchangeLongRelease(Scope scope, Object base, long offset, long expected, long value) { try { return compareAndExchangeLongReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long compareAndExchangeLongReleaseInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeLongRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetLongPlain(Scope scope, Object base, long offset, long expected, long value) { try { return weakCompareAndSetLongPlainInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetLongPlainInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetLongPlain(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetLong(Scope scope, Object base, long offset, long expected, long value) { try { return weakCompareAndSetLongInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetLongInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetLong(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetLongAcquire(Scope scope, Object base, long offset, long expected, long value) { try { return weakCompareAndSetLongAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetLongAcquireInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetLongAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetLongRelease(Scope scope, Object base, long offset, long expected, long value) { try { return weakCompareAndSetLongReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetLongReleaseInternal(Scope scope, Object base, long offset, long expected, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetLongRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndSetLong(Scope scope, Object base, long offset, long value) { try { return getAndSetLongInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndSetLongInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetLong(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndSetLongAcquire(Scope scope, Object base, long offset, long value) { try { return getAndSetLongAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndSetLongAcquireInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetLongAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndSetLongRelease(Scope scope, Object base, long offset, long value) { try { return getAndSetLongReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndSetLongReleaseInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetLongRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndAddLong(Scope scope, Object base, long offset, long delta) { try { return getAndAddLongInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndAddLongInternal(Scope scope, Object base, long offset, long delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddLong(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndAddLongAcquire(Scope scope, Object base, long offset, long delta) { try { return getAndAddLongAcquireInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndAddLongAcquireInternal(Scope scope, Object base, long offset, long delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddLongAcquire(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndAddLongRelease(Scope scope, Object base, long offset, long delta) { try { return getAndAddLongReleaseInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndAddLongReleaseInternal(Scope scope, Object base, long offset, long delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddLongRelease(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseOrLong(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseOrLongInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseOrLongInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrLong(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseOrLongAcquire(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseOrLongAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseOrLongAcquireInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrLongAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseOrLongRelease(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseOrLongReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseOrLongReleaseInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseOrLongRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseAndLong(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseAndLongInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseAndLongInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndLong(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseAndLongAcquire(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseAndLongAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseAndLongAcquireInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndLongAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseAndLongRelease(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseAndLongReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseAndLongReleaseInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseAndLongRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseXorLong(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseXorLongInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseXorLongInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorLong(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseXorLongAcquire(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseXorLongAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseXorLongAcquireInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorLongAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public long getAndBitwiseXorLongRelease(Scope scope, Object base, long offset, long value) { try { return getAndBitwiseXorLongReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private long getAndBitwiseXorLongReleaseInternal(Scope scope, Object base, long offset, long value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndBitwiseXorLongRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getFloat(Scope scope, Object base, long offset) { try { return getFloatInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getFloatInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getFloat(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putFloat(Scope scope, Object base, long offset, float value) { try { putFloatInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putFloatInternal(Scope scope, Object base, long offset, float value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putFloat(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getFloatVolatile(Scope scope, Object base, long offset) { try { return getFloatVolatileInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getFloatVolatileInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getFloatVolatile(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putFloatVolatile(Scope scope, Object base, long offset, float value) { try { putFloatVolatileInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putFloatVolatileInternal(Scope scope, Object base, long offset, float value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putFloatVolatile(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getFloatAcquire(Scope scope, Object base, long offset) { try { return getFloatAcquireInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getFloatAcquireInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getFloatAcquire(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putFloatRelease(Scope scope, Object base, long offset, float value) { try { putFloatReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putFloatReleaseInternal(Scope scope, Object base, long offset, float value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putFloatRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getFloatOpaque(Scope scope, Object base, long offset) { try { return getFloatOpaqueInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getFloatOpaqueInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getFloatOpaque(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putFloatOpaque(Scope scope, Object base, long offset, float value) { try { putFloatOpaqueInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putFloatOpaqueInternal(Scope scope, Object base, long offset, float value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putFloatOpaque(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean compareAndSetFloat(Scope scope, Object base, long offset, float expected, float value) { try { return compareAndSetFloatInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean compareAndSetFloatInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndSetFloat(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float compareAndExchangeFloat(Scope scope, Object base, long offset, float expected, float value) { try { return compareAndExchangeFloatInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float compareAndExchangeFloatInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeFloat(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float compareAndExchangeFloatAcquire(Scope scope, Object base, long offset, float expected, float value) { try { return compareAndExchangeFloatAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float compareAndExchangeFloatAcquireInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeFloatAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float compareAndExchangeFloatRelease(Scope scope, Object base, long offset, float expected, float value) { try { return compareAndExchangeFloatReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float compareAndExchangeFloatReleaseInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeFloatRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetFloatPlain(Scope scope, Object base, long offset, float expected, float value) { try { return weakCompareAndSetFloatPlainInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetFloatPlainInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetFloatPlain(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetFloat(Scope scope, Object base, long offset, float expected, float value) { try { return weakCompareAndSetFloatInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetFloatInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetFloat(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetFloatAcquire(Scope scope, Object base, long offset, float expected, float value) { try { return weakCompareAndSetFloatAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetFloatAcquireInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetFloatAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetFloatRelease(Scope scope, Object base, long offset, float expected, float value) { try { return weakCompareAndSetFloatReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetFloatReleaseInternal(Scope scope, Object base, long offset, float expected, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetFloatRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getAndSetFloat(Scope scope, Object base, long offset, float value) { try { return getAndSetFloatInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getAndSetFloatInternal(Scope scope, Object base, long offset, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetFloat(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getAndSetFloatAcquire(Scope scope, Object base, long offset, float value) { try { return getAndSetFloatAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getAndSetFloatAcquireInternal(Scope scope, Object base, long offset, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetFloatAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getAndSetFloatRelease(Scope scope, Object base, long offset, float value) { try { return getAndSetFloatReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getAndSetFloatReleaseInternal(Scope scope, Object base, long offset, float value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetFloatRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getAndAddFloat(Scope scope, Object base, long offset, float delta) { try { return getAndAddFloatInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getAndAddFloatInternal(Scope scope, Object base, long offset, float delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddFloat(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getAndAddFloatAcquire(Scope scope, Object base, long offset, float delta) { try { return getAndAddFloatAcquireInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getAndAddFloatAcquireInternal(Scope scope, Object base, long offset, float delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddFloatAcquire(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public float getAndAddFloatRelease(Scope scope, Object base, long offset, float delta) { try { return getAndAddFloatReleaseInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private float getAndAddFloatReleaseInternal(Scope scope, Object base, long offset, float delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddFloatRelease(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getDouble(Scope scope, Object base, long offset) { try { return getDoubleInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getDoubleInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getDouble(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putDouble(Scope scope, Object base, long offset, double value) { try { putDoubleInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putDoubleInternal(Scope scope, Object base, long offset, double value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putDouble(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getDoubleVolatile(Scope scope, Object base, long offset) { try { return getDoubleVolatileInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getDoubleVolatileInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getDoubleVolatile(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putDoubleVolatile(Scope scope, Object base, long offset, double value) { try { putDoubleVolatileInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putDoubleVolatileInternal(Scope scope, Object base, long offset, double value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putDoubleVolatile(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getDoubleAcquire(Scope scope, Object base, long offset) { try { return getDoubleAcquireInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getDoubleAcquireInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getDoubleAcquire(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putDoubleRelease(Scope scope, Object base, long offset, double value) { try { putDoubleReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putDoubleReleaseInternal(Scope scope, Object base, long offset, double value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putDoubleRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getDoubleOpaque(Scope scope, Object base, long offset) { try { return getDoubleOpaqueInternal(scope, base, offset); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getDoubleOpaqueInternal(Scope scope, Object base, long offset) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getDoubleOpaque(base, offset); } finally { Reference.reachabilityFence(scope); } } @ForceInline public void putDoubleOpaque(Scope scope, Object base, long offset, double value) { try { putDoubleOpaqueInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private void putDoubleOpaqueInternal(Scope scope, Object base, long offset, double value) { try { if (scope != null) { scope.checkValidState(); } UNSAFE.putDoubleOpaque(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean compareAndSetDouble(Scope scope, Object base, long offset, double expected, double value) { try { return compareAndSetDoubleInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean compareAndSetDoubleInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndSetDouble(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double compareAndExchangeDouble(Scope scope, Object base, long offset, double expected, double value) { try { return compareAndExchangeDoubleInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double compareAndExchangeDoubleInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeDouble(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double compareAndExchangeDoubleAcquire(Scope scope, Object base, long offset, double expected, double value) { try { return compareAndExchangeDoubleAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double compareAndExchangeDoubleAcquireInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeDoubleAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double compareAndExchangeDoubleRelease(Scope scope, Object base, long offset, double expected, double value) { try { return compareAndExchangeDoubleReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double compareAndExchangeDoubleReleaseInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.compareAndExchangeDoubleRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetDoublePlain(Scope scope, Object base, long offset, double expected, double value) { try { return weakCompareAndSetDoublePlainInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetDoublePlainInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetDoublePlain(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetDouble(Scope scope, Object base, long offset, double expected, double value) { try { return weakCompareAndSetDoubleInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetDoubleInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetDouble(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetDoubleAcquire(Scope scope, Object base, long offset, double expected, double value) { try { return weakCompareAndSetDoubleAcquireInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetDoubleAcquireInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetDoubleAcquire(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public boolean weakCompareAndSetDoubleRelease(Scope scope, Object base, long offset, double expected, double value) { try { return weakCompareAndSetDoubleReleaseInternal(scope, base, offset, expected, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private boolean weakCompareAndSetDoubleReleaseInternal(Scope scope, Object base, long offset, double expected, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.weakCompareAndSetDoubleRelease(base, offset, expected, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getAndSetDouble(Scope scope, Object base, long offset, double value) { try { return getAndSetDoubleInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getAndSetDoubleInternal(Scope scope, Object base, long offset, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetDouble(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getAndSetDoubleAcquire(Scope scope, Object base, long offset, double value) { try { return getAndSetDoubleAcquireInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getAndSetDoubleAcquireInternal(Scope scope, Object base, long offset, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetDoubleAcquire(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getAndSetDoubleRelease(Scope scope, Object base, long offset, double value) { try { return getAndSetDoubleReleaseInternal(scope, base, offset, value); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getAndSetDoubleReleaseInternal(Scope scope, Object base, long offset, double value) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndSetDoubleRelease(base, offset, value); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getAndAddDouble(Scope scope, Object base, long offset, double delta) { try { return getAndAddDoubleInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getAndAddDoubleInternal(Scope scope, Object base, long offset, double delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddDouble(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getAndAddDoubleAcquire(Scope scope, Object base, long offset, double delta) { try { return getAndAddDoubleAcquireInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getAndAddDoubleAcquireInternal(Scope scope, Object base, long offset, double delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddDoubleAcquire(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } @ForceInline public double getAndAddDoubleRelease(Scope scope, Object base, long offset, double delta) { try { return getAndAddDoubleReleaseInternal(scope, base, offset, delta); } catch (Scope.ScopedAccessError ex) { throw new IllegalStateException("This segment is already closed"); } } @ForceInline @Scoped private double getAndAddDoubleReleaseInternal(Scope scope, Object base, long offset, double delta) { try { if (scope != null) { scope.checkValidState(); } return UNSAFE.getAndAddDoubleRelease(base, offset, delta); } finally { Reference.reachabilityFence(scope); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy