< prev index next > src/java.base/share/classes/java/lang/invoke/VarHandle.java
Print this page
* @see MethodType
* @since 9
*/
public abstract sealed class VarHandle implements Constable
permits IndirectVarHandle, LazyInitializingVarHandle, SegmentVarHandle,
VarHandleByteArrayAsChars.ByteArrayViewVarHandle,
VarHandleByteArrayAsDoubles.ByteArrayViewVarHandle,
VarHandleByteArrayAsFloats.ByteArrayViewVarHandle,
VarHandleByteArrayAsInts.ByteArrayViewVarHandle,
VarHandleByteArrayAsLongs.ByteArrayViewVarHandle,
VarHandleByteArrayAsShorts.ByteArrayViewVarHandle,
VarHandleBooleans.Array,
VarHandleBooleans.FieldInstanceReadOnly,
- VarHandleBooleans.FieldStaticReadOnly,
VarHandleBytes.Array,
VarHandleBytes.FieldInstanceReadOnly,
- VarHandleBytes.FieldStaticReadOnly,
VarHandleChars.Array,
VarHandleChars.FieldInstanceReadOnly,
- VarHandleChars.FieldStaticReadOnly,
VarHandleDoubles.Array,
VarHandleDoubles.FieldInstanceReadOnly,
- VarHandleDoubles.FieldStaticReadOnly,
VarHandleFloats.Array,
VarHandleFloats.FieldInstanceReadOnly,
- VarHandleFloats.FieldStaticReadOnly,
VarHandleInts.Array,
VarHandleInts.FieldInstanceReadOnly,
- VarHandleInts.FieldStaticReadOnly,
VarHandleLongs.Array,
VarHandleLongs.FieldInstanceReadOnly,
- VarHandleLongs.FieldStaticReadOnly,
- VarHandleReferences.Array,
VarHandleReferences.FieldInstanceReadOnly,
- VarHandleReferences.FieldStaticReadOnly,
VarHandleShorts.Array,
VarHandleShorts.FieldInstanceReadOnly,
! VarHandleShorts.FieldStaticReadOnly {
final VarForm vform;
final boolean exact;
VarHandle(VarForm vform) {
this(vform, false);
* @see MethodType
* @since 9
*/
public abstract sealed class VarHandle implements Constable
permits IndirectVarHandle, LazyInitializingVarHandle, SegmentVarHandle,
+ ArrayVarHandle, VarHandles.StaticFieldVarHandle,
VarHandleByteArrayAsChars.ByteArrayViewVarHandle,
VarHandleByteArrayAsDoubles.ByteArrayViewVarHandle,
VarHandleByteArrayAsFloats.ByteArrayViewVarHandle,
VarHandleByteArrayAsInts.ByteArrayViewVarHandle,
VarHandleByteArrayAsLongs.ByteArrayViewVarHandle,
VarHandleByteArrayAsShorts.ByteArrayViewVarHandle,
VarHandleBooleans.Array,
VarHandleBooleans.FieldInstanceReadOnly,
VarHandleBytes.Array,
VarHandleBytes.FieldInstanceReadOnly,
VarHandleChars.Array,
VarHandleChars.FieldInstanceReadOnly,
VarHandleDoubles.Array,
VarHandleDoubles.FieldInstanceReadOnly,
VarHandleFloats.Array,
VarHandleFloats.FieldInstanceReadOnly,
VarHandleInts.Array,
VarHandleInts.FieldInstanceReadOnly,
VarHandleLongs.Array,
VarHandleLongs.FieldInstanceReadOnly,
VarHandleReferences.FieldInstanceReadOnly,
VarHandleShorts.Array,
VarHandleShorts.FieldInstanceReadOnly,
! VarHandleFlatValues.FieldInstanceReadOnly,
+ VarHandleNonAtomicReferences.FieldInstanceReadOnly,
+ VarHandleNonAtomicFlatValues.FieldInstanceReadOnly {
final VarForm vform;
final boolean exact;
VarHandle(VarForm vform) {
this(vform, false);
this.vform = vform;
this.exact = exact;
}
/**
! * Returns the target VarHandle. Subclasses may override this method to implement
! * additional logic for example lazily initializing the declaring class of a static field var handle.
*/
@ForceInline
! VarHandle target() {
! return asDirect();
}
/**
! * Returns the direct target VarHandle. Indirect VarHandle subclasses should implement
! * this method.
*
* @see #getMethodHandle(int)
* @see #checkAccessModeThenIsDirect(AccessDescriptor)
*/
@ForceInline
this.vform = vform;
this.exact = exact;
}
/**
! * A barrier for accessing a target var handle used by static var handle
! * implementation methods. This allows initialization barriers and strict
+ * field initialization checks.
+ *
+ * @param reading whether this access performs any read
*/
@ForceInline
! VarHandle onStaticFieldAccess(boolean reading) {
! return this;
}
/**
! * Returns the direct VarHandle, passed into the method handle that perform
! * conversions or has the actual implementation when this VarHandle is
+ * indirect.
*
* @see #getMethodHandle(int)
* @see #checkAccessModeThenIsDirect(AccessDescriptor)
*/
@ForceInline
< prev index next >