8199149: Improve the exception message thrown by VarHandle of unsupported operation

Reviewed-by: liach, jvernee
This commit is contained in:
Mandy Chung 2023-07-20 20:21:32 +00:00
parent 354c6605e3
commit d7b9416406
4 changed files with 12 additions and 5 deletions

View file

@ -2003,6 +2003,11 @@ public abstract sealed class VarHandle implements Constable
default -> throw new IllegalArgumentException("No AccessMode value for method name " + methodName);
};
}
private static final @Stable AccessMode[] VALUES = values();
static AccessMode valueFromOrdinal(int mode) {
return VALUES[mode];
}
}
static final class AccessDescriptor {
@ -2215,7 +2220,7 @@ public abstract sealed class VarHandle implements Constable
* @throws UnsupportedOperationException if the access mode is not supported
*/
MethodHandle getMethodHandleUncached(int mode) {
MethodType mt = accessModeType(AccessMode.values()[mode]).
MethodType mt = accessModeType(AccessMode.valueFromOrdinal(mode)).
insertParameterTypes(0, VarHandle.class);
MemberName mn = vform.getMemberName(mode);
DirectMethodHandle dmh = DirectMethodHandle.make(mn);