< 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,
+ ArrayVarHandle, VarHandles.StaticFieldVarHandle,
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 {
+ 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.
+ * 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 target() {
- return asDirect();
+ VarHandle onStaticFieldAccess(boolean reading) {
+ return this;
}
/**
- * Returns the direct target VarHandle. Indirect VarHandle subclasses should implement
- * this method.
+ * 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 >