APIdia Launch Partner
Top Constructors Methods
java.lang.invoke

pack-priv final Class VarHandles

extends Object
Class Inheritance
Imports
jdk.internal.misc.CDS, sun.invoke.util.Wrapper, java.lang.foreign.MemoryLayout, java.lang.reflect.Constructor, .Field, .Method, .Modifier, java.nio.ByteOrder, java.util.ArrayList, .List, .Objects, java.util.stream.Stream

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
private static MethodHandle
pack-priv static VarHandle
byteArrayViewHandle(Class<?> viewArrayClass, boolean be)

public static VarHandle
collectCoordinates(VarHandle target, int pos, MethodHandle pFilter)

public static VarHandle
dropCoordinates(VarHandle target, int pos, Class<?>... valueTypes)

pack-priv static Class<?>[]
public static VarHandle
filterCoordinates(VarHandle target, int pos, MethodHandle... filters)

public static VarHandle
filterValue(VarHandle target, MethodHandle pFilterToTarget, MethodHandle pFilterFromTarget)

pack-priv static Field
getFieldFromReceiverAndOffset(Class<?> receiverType, long offset, Class<?> fieldType)

pack-priv static Field
getStaticFieldFromBaseAndOffset(Class<?> declaringClass, long offset, Class<?> fieldType)

pack-priv static void
public static VarHandle
insertCoordinates(VarHandle target, int pos, Object... values)

private static boolean
private static MethodHandle
joinDuplicateArgs(MethodHandle handle, int originalStart, int dropStart, int length)

pack-priv static VarHandle
pack-priv static VarHandle
makeByteBufferViewHandle(Class<?> viewArrayClass, boolean be)

pack-priv static VarHandle
makeFieldHandle(MemberName f, Class<?> refc, boolean isWriteAllowedOnFinalFields)

pack-priv static VarHandle
makeStaticFieldVarHandle(Class<?> decl, MemberName f, boolean isWriteAllowedOnFinalFields)

private static VarHandle
pack-priv static VarHandle

Returns:

the created var handle
memorySegmentViewHandle
(Class<?>
the Java carrier type of the element
carrier
,
MemoryLayout
the enclosing layout to perform bound and alignment checks against
enclosing
,
long
alignment of this accessed element in the enclosing layout
alignmentMask
,
boolean
if access path has a constant offset value, i.e. it has no strides
constantOffset
,
long
the offset value, if the offset is constant
offset
,
ByteOrder
the byte order
byteOrder
)

Creates a memory segment view var handle accessing a carrier element.

private static MethodType
methodTypeFor(VarHandle.AccessType at, MethodType oldType, List<Class<?>> oldCoordinates, List<Class<?>> newCoordinates)

private static int
public static VarHandle
permuteCoordinates(VarHandle target, List<Class<?>> newCoordinates, int... reorder)

private static int[]
reorderArrayFor(VarHandle.AccessType at, List<Class<?>> newCoordinates, int[] reorder)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

VarHandlesback to summary
pack-priv VarHandles()

Method Detail

adaptForCheckedExceptionsback to summary
private static MethodHandle adaptForCheckedExceptions(MethodHandle target)
byteArrayViewHandleback to summary
pack-priv static VarHandle byteArrayViewHandle(Class<?> viewArrayClass, boolean be)
collectCoordinatesback to summary
public static VarHandle collectCoordinates(VarHandle target, int pos, MethodHandle pFilter)
dropCoordinatesback to summary
public static VarHandle dropCoordinates(VarHandle target, int pos, Class<?>... valueTypes)
exceptionTypesback to summary
pack-priv static Class<?>[] exceptionTypes(MethodHandle handle)
filterCoordinatesback to summary
public static VarHandle filterCoordinates(VarHandle target, int pos, MethodHandle... filters)
filterValueback to summary
public static VarHandle filterValue(VarHandle target, MethodHandle pFilterToTarget, MethodHandle pFilterFromTarget)
getFieldFromReceiverAndOffsetback to summary
pack-priv static Field getFieldFromReceiverAndOffset(Class<?> receiverType, long offset, Class<?> fieldType)
getStaticFieldFromBaseAndOffsetback to summary
pack-priv static Field getStaticFieldFromBaseAndOffset(Class<?> declaringClass, long offset, Class<?> fieldType)
handleCheckedExceptionsback to summary
pack-priv static void handleCheckedExceptions(Throwable throwable) throws Throwable
insertCoordinatesback to summary
public static VarHandle insertCoordinates(VarHandle target, int pos, Object... values)
isCheckedExceptionback to summary
private static boolean isCheckedException(Class<?> clazz)
joinDuplicateArgsback to summary
private static MethodHandle joinDuplicateArgs(MethodHandle handle, int originalStart, int dropStart, int length)
makeArrayElementHandleback to summary
pack-priv static VarHandle makeArrayElementHandle(Class<?> arrayClass)
makeByteBufferViewHandleback to summary
pack-priv static VarHandle makeByteBufferViewHandle(Class<?> viewArrayClass, boolean be)
makeFieldHandleback to summary
pack-priv static VarHandle makeFieldHandle(MemberName f, Class<?> refc, boolean isWriteAllowedOnFinalFields)
makeStaticFieldVarHandleback to summary
pack-priv static VarHandle makeStaticFieldVarHandle(Class<?> decl, MemberName f, boolean isWriteAllowedOnFinalFields)
maybeAdaptback to summary
private static VarHandle maybeAdapt(VarHandle target)
memorySegmentViewHandleback to summary
pack-priv static VarHandle memorySegmentViewHandle(Class<?> carrier, MemoryLayout enclosing, long alignmentMask, boolean constantOffset, long offset, ByteOrder byteOrder)

Creates a memory segment view var handle accessing a carrier element. It has access coordinates (MS, long) if constantOffset, (MS, long, (validated) long) otherwise.

The resulting var handle will take a memory segment as first argument (the segment to be dereferenced), and a long as second argument (the offset into the segment). Both arguments are checked.

If constantOffset == false, the resulting var handle will take a third pre-validated additional offset instead of the given fixed offset, and caller must ensure that passed additional offset, either to the handle (such as computing through method handles) or as fixed offset here, is valid.

Parameters
carrier:Class<?>

the Java carrier type of the element

enclosing:MemoryLayout

the enclosing layout to perform bound and alignment checks against

alignmentMask:long

alignment of this accessed element in the enclosing layout

constantOffset:boolean

if access path has a constant offset value, i.e. it has no strides

offset:long

the offset value, if the offset is constant

byteOrder:ByteOrder

the byte order

Returns:VarHandle

the created var handle

methodTypeForback to summary
private static MethodType methodTypeFor(VarHandle.AccessType at, MethodType oldType, List<Class<?>> oldCoordinates, List<Class<?>> newCoordinates)
numTrailingArgsback to summary
private static int numTrailingArgs(VarHandle.AccessType at)
permuteCoordinatesback to summary
public static VarHandle permuteCoordinates(VarHandle target, List<Class<?>> newCoordinates, int... reorder)
reorderArrayForback to summary
private static int[] reorderArrayFor(VarHandle.AccessType at, List<Class<?>> newCoordinates, int[] reorder)