8267612: Declare package-private VarHandle.AccessMode/AccessType counts
Reviewed-by: mchung
diff --git a/src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java b/src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java
index 2ef81c1..23b7284 100644
--- a/src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java
+++ b/src/java.base/share/classes/java/lang/invoke/IndirectVarHandle.java
@@ -45,7 +45,7 @@
/* package */ class IndirectVarHandle extends VarHandle {
@Stable
- private final MethodHandle[] handleMap = new MethodHandle[AccessMode.values().length];
+ private final MethodHandle[] handleMap = new MethodHandle[AccessMode.COUNT];
private final VarHandle directTarget; // cache, for performance reasons
private final VarHandle target;
private final BiFunction<AccessMode, MethodHandle, MethodHandle> handleFactory;
diff --git a/src/java.base/share/classes/java/lang/invoke/Invokers.java b/src/java.base/share/classes/java/lang/invoke/Invokers.java
index 7bc58e2..4b32f82 100644
--- a/src/java.base/share/classes/java/lang/invoke/Invokers.java
+++ b/src/java.base/share/classes/java/lang/invoke/Invokers.java
@@ -55,8 +55,8 @@
INV_GENERIC = 1, // MethodHandles.invoker (generic invocation)
INV_BASIC = 2, // MethodHandles.basicInvoker
VH_INV_EXACT = 3, // MethodHandles.varHandleExactInvoker
- VH_INV_GENERIC = VH_INV_EXACT + VarHandle.AccessMode.values().length, // MethodHandles.varHandleInvoker
- INV_LIMIT = VH_INV_GENERIC + VarHandle.AccessMode.values().length;
+ VH_INV_GENERIC = VH_INV_EXACT + VarHandle.AccessMode.COUNT, // MethodHandles.varHandleInvoker
+ INV_LIMIT = VH_INV_GENERIC + VarHandle.AccessMode.COUNT;
/** Compute and cache information common to all collecting adapters
* that implement members of the erasure-family of the given erased type.
diff --git a/src/java.base/share/classes/java/lang/invoke/VarForm.java b/src/java.base/share/classes/java/lang/invoke/VarForm.java
index ecbd1c1..7b118db 100644
--- a/src/java.base/share/classes/java/lang/invoke/VarForm.java
+++ b/src/java.base/share/classes/java/lang/invoke/VarForm.java
@@ -49,8 +49,8 @@
final @Stable MemberName[] memberName_table;
VarForm(Class<?> implClass, Class<?> receiver, Class<?> value, Class<?>... intermediate) {
- this.methodType_table = new MethodType[VarHandle.AccessType.values().length];
- this.memberName_table = new MemberName[VarHandle.AccessMode.values().length];
+ this.methodType_table = new MethodType[VarHandle.AccessType.COUNT];
+ this.memberName_table = new MemberName[VarHandle.AccessMode.COUNT];
this.implClass = implClass;
if (receiver == null) {
initMethodTypes(value, intermediate);
@@ -64,7 +64,7 @@
// Used by IndirectVarHandle
VarForm(Class<?> value, Class<?>[] coordinates) {
- this.methodType_table = new MethodType[VarHandle.AccessType.values().length];
+ this.methodType_table = new MethodType[VarHandle.AccessType.COUNT];
this.memberName_table = null;
this.implClass = null;
initMethodTypes(value, coordinates);
diff --git a/src/java.base/share/classes/java/lang/invoke/VarHandle.java b/src/java.base/share/classes/java/lang/invoke/VarHandle.java
index e69f9e2..0dfd2e8 100644
--- a/src/java.base/share/classes/java/lang/invoke/VarHandle.java
+++ b/src/java.base/share/classes/java/lang/invoke/VarHandle.java
@@ -1637,6 +1637,10 @@
COMPARE_AND_EXCHANGE(Object.class),
GET_AND_UPDATE(Object.class);
+ static final int COUNT = GET_AND_UPDATE.ordinal() + 1;
+ static {
+ assert (COUNT == values().length);
+ }
final Class<?> returnType;
final boolean isMonomorphicInReturnType;
@@ -1891,6 +1895,10 @@
GET_AND_BITWISE_XOR_ACQUIRE("getAndBitwiseXorAcquire", AccessType.GET_AND_UPDATE),
;
+ static final int COUNT = GET_AND_BITWISE_XOR_ACQUIRE.ordinal() + 1;
+ static {
+ assert (COUNT == values().length);
+ }
final String methodName;
final AccessType at;
@@ -2126,12 +2134,10 @@
static class TypesAndInvokers {
final @Stable
- MethodType[] methodType_table =
- new MethodType[VarHandle.AccessType.values().length];
+ MethodType[] methodType_table = new MethodType[VarHandle.AccessType.COUNT];
final @Stable
- MethodHandle[] methodHandle_table =
- new MethodHandle[AccessMode.values().length];
+ MethodHandle[] methodHandle_table = new MethodHandle[AccessMode.COUNT];
}
@ForceInline