--- a/jdk/src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template Thu May 05 11:37:18 2016 +0100
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template Thu May 05 11:39:08 2016 -0700
@@ -41,12 +41,12 @@
#end[Object]
FieldInstanceReadOnly(Class<?> receiverType, long fieldOffset{#if[Object]?, Class<?> fieldType}) {
- this(receiverType, fieldOffset{#if[Object]?, fieldType}, FieldInstanceReadOnly.class);
+ this(receiverType, fieldOffset{#if[Object]?, fieldType}, FieldInstanceReadOnly.FORM);
}
protected FieldInstanceReadOnly(Class<?> receiverType, long fieldOffset{#if[Object]?, Class<?> fieldType},
- Class<? extends FieldInstanceReadOnly> handle) {
- super(VarForm.createFromStatic(handle), receiverType, {#if[Object]?fieldType:$type$.class});
+ VarForm form) {
+ super(form);
this.fieldOffset = fieldOffset;
this.receiverType = receiverType;
#if[Object]
@@ -54,6 +54,11 @@
#end[Object]
}
+ @Override
+ final MethodType accessModeTypeUncached(AccessMode accessMode) {
+ return accessMode.at.accessModeType(receiverType, {#if[Object]?fieldType:$type$.class});
+ }
+
@ForceInline
static $type$ get(FieldInstanceReadOnly handle, Object holder) {
return UNSAFE.get$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)),
@@ -77,12 +82,14 @@
return UNSAFE.get$Type$Acquire(Objects.requireNonNull(handle.receiverType.cast(holder)),
handle.fieldOffset);
}
+
+ static final VarForm FORM = new VarForm(FieldInstanceReadOnly.class, Object.class, $type$.class);
}
- static class FieldInstanceReadWrite extends FieldInstanceReadOnly {
+ static final class FieldInstanceReadWrite extends FieldInstanceReadOnly {
FieldInstanceReadWrite(Class<?> receiverType, long fieldOffset{#if[Object]?, Class<?> fieldType}) {
- super(receiverType, fieldOffset{#if[Object]?, fieldType}, FieldInstanceReadWrite.class);
+ super(receiverType, fieldOffset{#if[Object]?, fieldType}, FieldInstanceReadWrite.FORM);
}
@ForceInline
@@ -202,6 +209,8 @@
value) + value;
}
#end[AtomicAdd]
+
+ static final VarForm FORM = new VarForm(FieldInstanceReadWrite.class, Object.class, $type$.class);
}
@@ -213,12 +222,12 @@
#end[Object]
FieldStaticReadOnly(Object base, long fieldOffset{#if[Object]?, Class<?> fieldType}) {
- this(base, fieldOffset{#if[Object]?, fieldType}, FieldStaticReadOnly.class);
+ this(base, fieldOffset{#if[Object]?, fieldType}, FieldStaticReadOnly.FORM);
}
protected FieldStaticReadOnly(Object base, long fieldOffset{#if[Object]?, Class<?> fieldType},
- Class<? extends FieldStaticReadOnly> handle) {
- super(VarForm.createFromStatic(handle), null, {#if[Object]?fieldType:$type$.class});
+ VarForm form) {
+ super(form);
this.base = base;
this.fieldOffset = fieldOffset;
#if[Object]
@@ -226,6 +235,11 @@
#end[Object]
}
+ @Override
+ final MethodType accessModeTypeUncached(AccessMode accessMode) {
+ return accessMode.at.accessModeType(null, {#if[Object]?fieldType:$type$.class});
+ }
+
@ForceInline
static $type$ get(FieldStaticReadOnly handle) {
return UNSAFE.get$Type$(handle.base,
@@ -249,12 +263,14 @@
return UNSAFE.get$Type$Acquire(handle.base,
handle.fieldOffset);
}
+
+ static final VarForm FORM = new VarForm(FieldStaticReadOnly.class, null, $type$.class);
}
- static class FieldStaticReadWrite extends FieldStaticReadOnly {
+ static final class FieldStaticReadWrite extends FieldStaticReadOnly {
FieldStaticReadWrite(Object base, long fieldOffset{#if[Object]?, Class<?> fieldType}) {
- super(base, fieldOffset{#if[Object]?, fieldType}, FieldStaticReadWrite.class);
+ super(base, fieldOffset{#if[Object]?, fieldType}, FieldStaticReadWrite.FORM);
}
@ForceInline
@@ -375,6 +391,8 @@
value) + value;
}
#end[AtomicAdd]
+
+ static final VarForm FORM = new VarForm(FieldStaticReadWrite.class, null, $type$.class);
}
@@ -387,8 +405,7 @@
#end[Object]
Array(int abase, int ashift{#if[Object]?, Class<?> arrayType}) {
- super(VarForm.createFromStatic(Array.class),
- {#if[Object]?arrayType:$type$[].class}, {#if[Object]?arrayType.getComponentType():$type$.class}, int.class);
+ super(Array.FORM);
this.abase = abase;
this.ashift = ashift;
#if[Object]
@@ -397,6 +414,11 @@
#end[Object]
}
+ @Override
+ final MethodType accessModeTypeUncached(AccessMode accessMode) {
+ return accessMode.at.accessModeType({#if[Object]?arrayType:$type$[].class}, {#if[Object]?arrayType.getComponentType():$type$.class}, int.class);
+ }
+
@ForceInline
static $type$ get(Array handle, Object oarray, int index) {
#if[Object]
@@ -630,5 +652,7 @@
value) + value;
}
#end[AtomicAdd]
+
+ static final VarForm FORM = new VarForm(Array.class, {#if[Object]?Object[].class:$type$[].class}, {#if[Object]?Object.class:$type$.class}, int.class);
}
}