diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java index cb5a398d68d..eceba166e24 100644 --- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java +++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java @@ -1447,9 +1447,10 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method } /** - * Produces a VarHandle giving access to non-static fields of type - * {@code T} declared by a receiver class of type {@code R}, supporting - * shape {@code (R : T)}. + * Produces a VarHandle giving access to a non-static field {@code name} + * of type {@code type} declared in a class of type {@code recv}. + * The VarHandle's variable type is {@code type} and it has one + * coordinate type, {@code recv}. *
* Access checking is performed immediately on behalf of the lookup * class. @@ -1472,7 +1473,7 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method *
* If the field is declared {@code volatile} then the returned VarHandle * will override access to the field (effectively ignore the - * {@code volatile} declaration) in accordance to it's specified + * {@code volatile} declaration) in accordance to its specified * access modes. *
* If the field type is {@code float} or {@code double} then numeric @@ -1568,9 +1569,10 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method } /** - * Produces a VarHandle giving access to a static field of type - * {@code T} declared by a given declaring class, supporting shape - * {@code ((empty) : T)}. + * Produces a VarHandle giving access to a static field {@code name} of + * type {@code type} declared in a class of type {@code decl}. + * The VarHandle's variable type is {@code type} and it has no + * coordinate types. *
* Access checking is performed immediately on behalf of the lookup * class. @@ -1596,7 +1598,7 @@ assertEquals(""+l, (String) MH_this.invokeExact(subl)); // Listie method *
* If the field is declared {@code volatile} then the returned VarHandle * will override access to the field (effectively ignore the - * {@code volatile} declaration) in accordance to it's specified + * {@code volatile} declaration) in accordance to its specified * access modes. *
* If the field type is {@code float} or {@code double} then numeric @@ -1691,7 +1693,13 @@ return mh1; public MethodHandle bind(Object receiver, String name, MethodType type) throws NoSuchMethodException, IllegalAccessException { Class extends Object> refc = receiver.getClass(); // may get NPE MemberName method = resolveOrFail(REF_invokeSpecial, refc, name, type); - MethodHandle mh = getDirectMethodNoRestrict(REF_invokeSpecial, refc, method, findBoundCallerClass(method)); + MethodHandle mh = getDirectMethodNoRestrictInvokeSpecial(refc, method, findBoundCallerClass(method)); + if (!mh.type().leadingReferenceParameter().isAssignableFrom(receiver.getClass())) { + throw new IllegalAccessException("The restricted defining class " + + mh.type().leadingReferenceParameter().getName() + + " is not assignable from receiver class " + + receiver.getClass().getName()); + } return mh.bindArgumentL(0, receiver).setVarargs(method); } @@ -1877,11 +1885,12 @@ return mh1; } /** - * Produces a VarHandle that accesses fields of type {@code T} declared - * by a class of type {@code R}, as described by the given reflected - * field. - * If the field is non-static the VarHandle supports a shape of - * {@code (R : T)}, otherwise supports a shape of {@code ((empty) : T)}. + * Produces a VarHandle giving access to a reflected field {@code f} + * of type {@code T} declared in a class of type {@code R}. + * The VarHandle's variable type is {@code T}. + * If the field is non-static the VarHandle has one coordinate type, + * {@code R}. Otherwise, the field is static, and the VarHandle has no + * coordinate types. *
* Access checking is performed immediately on behalf of the lookup * class, regardless of the value of the field's {@code accessible} @@ -1909,7 +1918,7 @@ return mh1; *
* If the field is declared {@code volatile} then the returned VarHandle * will override access to the field (effectively ignore the - * {@code volatile} declaration) in accordance to it's specified + * {@code volatile} declaration) in accordance to its specified * access modes. *
* If the field type is {@code float} or {@code double} then numeric @@ -2240,7 +2249,7 @@ return mh1; throw method.makeAccessException("caller class must be a subclass below the method", caller); } MethodType rawType = mh.type(); - if (rawType.parameterType(0) == caller) return mh; + if (caller.isAssignableFrom(rawType.parameterType(0))) return mh; // no need to restrict; already narrow MethodType narrowType = rawType.changeParameterType(0, caller); assert(!mh.isVarargsCollector()); // viewAsType will lose varargs-ness assert(mh.viewAsTypeChecks(narrowType, true)); @@ -2253,11 +2262,11 @@ return mh1; final boolean checkSecurity = true; return getDirectMethodCommon(refKind, refc, method, checkSecurity, doRestrict, callerClass); } - /** Check access and get the requested method, eliding receiver narrowing rules. */ - private MethodHandle getDirectMethodNoRestrict(byte refKind, Class> refc, MemberName method, Class> callerClass) throws IllegalAccessException { + /** Check access and get the requested method, for invokespecial with no restriction on the application of narrowing rules. */ + private MethodHandle getDirectMethodNoRestrictInvokeSpecial(Class> refc, MemberName method, Class> callerClass) throws IllegalAccessException { final boolean doRestrict = false; final boolean checkSecurity = true; - return getDirectMethodCommon(refKind, refc, method, checkSecurity, doRestrict, callerClass); + return getDirectMethodCommon(REF_invokeSpecial, refc, method, checkSecurity, doRestrict, callerClass); } /** Check access and get the requested method, eliding security manager checks. */ private MethodHandle getDirectMethodNoSecurityManager(byte refKind, Class> refc, MemberName method, Class> callerClass) throws IllegalAccessException { @@ -2309,10 +2318,8 @@ return mh1; DirectMethodHandle dmh = DirectMethodHandle.make(refKind, refc, method); MethodHandle mh = dmh; // Optionally narrow the receiver argument to refc using restrictReceiver. - if (doRestrict && - (refKind == REF_invokeSpecial || - (MethodHandleNatives.refKindHasReceiver(refKind) && - restrictProtectedReceiver(method)))) { + if ((doRestrict && refKind == REF_invokeSpecial) || + (MethodHandleNatives.refKindHasReceiver(refKind) && restrictProtectedReceiver(method))) { mh = restrictReceiver(method, dmh, lookupClass()); } mh = maybeBindCaller(method, mh, callerClass); @@ -2572,9 +2579,11 @@ return mh1; } /** - * - * Produces a VarHandle giving access to elements of an array type - * {@code T[]}, supporting shape {@code (T[], int : T)}. + * Produces a VarHandle giving access to elements of an array of type + * {@code arrayClass}. The VarHandle's variable type is the component type + * of {@code arrayClass} and the list of coordinate types is + * {@code (arrayClass, int)}, where the {@code int} coordinate type + * corresponds to an argument that is an index into an array. *
* Certain access modes of the returned VarHandle are unsupported under * the following conditions: @@ -2629,13 +2638,14 @@ return mh1; /** * Produces a VarHandle giving access to elements of a {@code byte[]} array * viewed as if it were a different primitive array type, such as - * {@code int[]} or {@code long[]}. The shape of the resulting VarHandle is - * {@code (byte[], int : T)}, where the {@code int} coordinate type - * corresponds to an argument that is an index in a {@code byte[]} array, - * and {@code T} is the component type of the given view array class. The - * returned VarHandle accesses bytes at an index in a {@code byte[]} array, - * composing bytes to or from a value of {@code T} according to the given - * endianness. + * {@code int[]} or {@code long[]}. + * The VarHandle's variable type is the component type of + * {@code viewArrayClass} and the list of coordinate types is + * {@code (byte[], int)}, where the {@code int} coordinate type + * corresponds to an argument that is an index into a {@code byte[]} array. + * The returned VarHandle accesses bytes at an index in a {@code byte[]} + * array, composing bytes to or from a value of the component type of + * {@code viewArrayClass} according to the given endianness. *
* The supported component types (variables types) are {@code short}, * {@code char}, {@code int}, {@code long}, {@code float} and @@ -2713,13 +2723,14 @@ return mh1; * Produces a VarHandle giving access to elements of a {@code ByteBuffer} * viewed as if it were an array of elements of a different primitive * component type to that of {@code byte}, such as {@code int[]} or - * {@code long[]}. The shape of the resulting VarHandle is - * {@code (ByteBuffer, int : T)}, where the {@code int} coordinate type - * corresponds to an argument that is an index in a {@code ByteBuffer}, and - * {@code T} is the component type of the given view array class. The - * returned VarHandle accesses bytes at an index in a {@code ByteBuffer}, - * composing bytes to or from a value of {@code T} according to the given - * endianness. + * {@code long[]}. + * The VarHandle's variable type is the component type of + * {@code viewArrayClass} and the list of coordinate types is + * {@code (ByteBuffer, int)}, where the {@code int} coordinate type + * corresponds to an argument that is an index into a {@code byte[]} array. + * The returned VarHandle accesses bytes at an index in a + * {@code ByteBuffer}, composing bytes to or from a value of the component + * type of {@code viewArrayClass} according to the given endianness. *
* The supported component types (variables types) are {@code short}, * {@code char}, {@code int}, {@code long}, {@code float} and diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/VarHandle.java b/jdk/src/java.base/share/classes/java/lang/invoke/VarHandle.java index ee0f712635c..9e2533f071e 100644 --- a/jdk/src/java.base/share/classes/java/lang/invoke/VarHandle.java +++ b/jdk/src/java.base/share/classes/java/lang/invoke/VarHandle.java @@ -41,7 +41,7 @@ import static java.lang.invoke.MethodHandleStatics.UNSAFE; import static java.lang.invoke.MethodHandleStatics.newInternalError; /** - * A VarHandle is a dynamically typed reference to a variable, or to a + * A VarHandle is a dynamically strongly typed reference to a variable, or to a * parametrically-defined family of variables, including static fields, * non-static fields, array elements, or components of an off-heap data * structure. Access to such variables is supported under various @@ -53,63 +53,62 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError; * *
A VarHandle has: *
Factory methods that produce or {@link java.lang.invoke.MethodHandles.Lookup - * lookup} VarHandle instances document the supported variable type, coordinate - * types, and shape. + * lookup} VarHandle instances document the supported variable type and the list + * of coordinate types. * - * For example, a VarHandle referencing a non-static field will declare a shape - * of {@code (R : T)}, where {@code R} is the receiver type and - * {@code T} is the field type, and where the VarHandle and an instance of the - * receiver type can be utilized to access the field variable. - * A VarHandle referencing array elements will declare a shape of - * {@code (T[], int : T)}, where {@code T[]} is the array type and {@code T} - * its component type, and where the VarHandle, an instance of the array type, - * and an {@code int} index can be utilized to access an array element variable. + *
Each access mode is associated with one access mode method, a + * signature polymorphic method named + * for the access mode. When an access mode method is invoked on a VarHandle + * instance, the initial arguments to the invocation are coordinate expressions + * that indicate in precisely which object the variable is to be accessed. + * Trailing arguments to the invocation represent values of importance to the + * access mode. For example, the various compare-and-set or compare-and-exchange + * access modes require two trailing arguments for the variable's expected value + * and new value. * - *
Each access mode is associated with a - * signature polymorphic method of the - * same name, where the VarHandle shape and access mode uniquely determine the - * canonical {@link #accessModeType(AccessMode) access mode type}, - * which in turn determines the matching constraints on a valid symbolic - * type descriptor at the call site of an access mode's method - * invocation. + *
The arity and types of arguments to the invocation of an access mode + * method are not checked statically. Instead, each access mode method + * specifies an {@link #accessModeType(AccessMode) access mode type}, + * represented as an instance of {@link MethodType}, that serves as a kind of + * method signature against which the arguments are checked dynamically. An + * access mode type gives formal parameter types in terms of the coordinate + * types of a VarHandle instance and the types for values of importance to the + * access mode. An access mode type also gives a return type, often in terms of + * the variable type of a VarHandle instance. When an access mode method is + * invoked on a VarHandle instance, the symbolic type descriptor at the + * call site, the run time types of arguments to the invocation, and the run + * time type of the return value, must match the types + * given in the access mode type. A runtime exception will be thrown if the + * match fails. * - * As such, VarHandles are dynamically and strongly typed. Their arity, - * argument types, and return type of an access mode method invocation are not - * statically checked. If they, and associated values, do not match the arity - * and types of the access mode's type, an exception will be thrown. - * - * The parameter types of an access mode method type will consist of those that - * are the VarHandles's coordinate types (in order), followed by access mode - * parameter types specific to the access mode. - * - *
An access mode's method documents the form of its method signature, which - * is derived from the access mode parameter types. The form is declared with - * the notation {@code (CT, P1 p1, P2 p2, ..., PN pn)R}, where {@code CT} is the - * coordinate types (as documented by a VarHandle factory method), {@code P1}, - * {@code P2} and {@code PN} are the first, second and the n'th access mode - * parameters named {@code p1}, {@code p2} and {@code pn} respectively, and - * {@code R} is the return type. - * - * For example, for the generic shape of {@code (CT : T)} the - * {@link #compareAndSet} access mode method documents that its method - * signature is of the form {@code (CT, T expectedValue, T newValue)boolean}, - * where the parameter types named {@code extendedValue} and {@code newValue} - * are the access mode parameter types. If the VarHandle accesses array - * elements with a shape of say {@code (T[], int : T)} then the access mode - * method type is {@code (T[], int, T, T)boolean}. + * For example, the access mode method {@link #compareAndSet} specifies that if + * its receiver is a VarHandle instance with coordinate types + * {@code CT1, ..., CTn} and variable type {@code T}, then its access mode type + * is {@code (CT1 c1, ..., CTn cn, T expectedValue, T newValue)boolean}. + * Suppose that a VarHandle instance can access array elements, and that its + * coordinate types are {@code String[]} and {@code int} while its variable type + * is {@code String}. The access mode type for {@code compareAndSet} on this + * VarHandle instance would be + * {@code (String[] c1, int c2, String expectedValue, String newValue)boolean}. + * Such a VarHandle instance may produced by the + * {@link MethodHandles#arrayElementVarHandle(Class) array factory method} and + * access array elements as follows: + *
{@code
+ * String[] sa = ...
+ * VarHandle avh = MethodHandles.arrayElementVarHandle(String[].class);
+ * boolean r = avh.compareAndSet(sa, 10, "expected", "new");
+ * }
*
* Access modes are grouped into the following categories: *
- * Invocation of an access mode's signature-polymorphic method behaves as if an - * invocation of {@link MethodHandle#invoke}, where the receiving method handle - * is bound to a VarHandle instance and the access mode. More specifically, the - * following: + * Invocation of an access mode method behaves as if an invocation of + * {@link MethodHandle#invoke}, where the receiving method handle accepts the + * VarHandle instance as the leading argument. More specifically, the + * following, where {@code {access-mode}} corresponds to the access mode method + * name: *
{@code
* VarHandle vh = ..
* R r = (R) vh.{access-mode}(p1, p2, ..., pN);
* }
- * behaves as if (modulo the access mode methods do not declare throwing of
- * {@code Throwable}):
+ * behaves as if:
* {@code
* VarHandle vh = ..
+ * VarHandle.AccessMode am = VarHandle.AccessMode.valueFromMethodName("{access-mode}");
* MethodHandle mh = MethodHandles.varHandleExactInvoker(
- * VarHandle.AccessMode.{access-mode},
- * vh.accessModeType(VarHandle.AccessMode.{access-mode}));
+ * am,
+ * vh.accessModeType(am));
*
- * mh = mh.bindTo(vh);
- * R r = (R) mh.invoke(p1, p2, ..., pN)
+ * R r = (R) mh.invoke(vh, p1, p2, ..., pN)
* }
- * or, more concisely, behaves as if:
- * {@code
- * VarHandle vh = ..
- * MethodHandle mh = vh.toMethodHandle(VarHandle.AccessMode.{access-mode});
- *
- * R r = (R) mh.invoke(p1, p2, ..., pN)
- * }
- * In terms of equivalent {@code invokevirtual} bytecode behaviour an access
- * mode method invocation is equivalent to:
+ * (modulo access mode methods do not declare throwing of {@code Throwable}).
+ * This is equivalent to:
* {@code
* MethodHandle mh = MethodHandles.lookup().findVirtual(
* VarHandle.class,
- * VarHandle.AccessMode.{access-mode}.methodName(),
+ * "{access-mode}",
* MethodType.methodType(R, p1, p2, ..., pN));
*
* R r = (R) mh.invokeExact(vh, p1, p2, ..., pN)
@@ -306,6 +298,17 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
* widen primitive values, as if by {@link MethodHandle#asType asType} (see also
* {@link MethodHandles#varHandleInvoker}).
*
+ * More concisely, such behaviour is equivalent to:
+ * {@code
+ * VarHandle vh = ..
+ * VarHandle.AccessMode am = VarHandle.AccessMode.valueFromMethodName("{access-mode}");
+ * MethodHandle mh = vh.toMethodHandle(am);
+ *
+ * R r = (R) mh.invoke(p1, p2, ..., pN)
+ * }
+ * Where, in this case, the method handle is bound to the VarHandle instance.
+ *
+ *
* Invocation checking
* In typical programs, VarHandle access mode type matching will usually
* succeed. But if a match fails, the JVM will throw a
@@ -439,7 +442,7 @@ public abstract class VarHandle {
* if the variable was declared non-{@code volatile}. Commonly referred to
* as plain read access.
*
- * The method signature is of the form {@code (CT)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn)T}.
*
*
The symbolic type descriptor at the call site of {@code get}
* must match the access mode type that is the result of calling
@@ -449,15 +452,15 @@ public abstract class VarHandle {
* throws {@code UnsupportedOperationException}.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT)}
+ * {@code (CT1 ct1, ..., CTn)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the value of the
* variable
* , statically represented using {@code Object}.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -469,21 +472,21 @@ public abstract class VarHandle {
* semantics of setting as if the variable was declared non-{@code volatile}
* and non-{@code final}. Commonly referred to as plain write access.
*
- *
The method signature is of the form {@code (CT, T newValue)void}
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T newValue)void}
*
*
The symbolic type descriptor at the call site of {@code set}
* must match the access mode type that is the result of calling
* {@code accessModeType(VarHandle.AccessMode.SET)} on this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T newValue)}
* , statically represented using varargs.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -497,7 +500,7 @@ public abstract class VarHandle {
* Returns the value of a variable, with memory semantics of reading as if
* the variable was declared {@code volatile}.
*
- *
The method signature is of the form {@code (CT)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn)T}.
*
*
The symbolic type descriptor at the call site of {@code getVolatile}
* must match the access mode type that is the result of calling
@@ -505,17 +508,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT)}
+ * {@code (CT1 ct1, ..., CTn ctn)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the value of the
* variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -526,7 +529,7 @@ public abstract class VarHandle {
* Sets the value of a variable to the {@code newValue}, with memory
* semantics of setting as if the variable was declared {@code volatile}.
*
- *
The method signature is of the form {@code (CT, T newValue)void}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T newValue)void}.
*
*
The symbolic type descriptor at the call site of {@code setVolatile}
* must match the access mode type that is the result of calling
@@ -538,14 +541,14 @@ public abstract class VarHandle {
* memory ordering effects compatible with {@code memory_order_seq_cst}.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T newValue)}
* , statically represented using varargs.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -557,7 +560,7 @@ public abstract class VarHandle {
* Returns the value of a variable, accessed in program order, but with no
* assurance of memory ordering effects with respect to other threads.
*
- *
The method signature is of the form {@code (CT)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn)T}.
*
*
The symbolic type descriptor at the call site of {@code getOpaque}
* must match the access mode type that is the result of calling
@@ -565,17 +568,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT)}
+ * {@code (CT1 ct1, ..., CTn ctn)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the value of the
* variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -587,7 +590,7 @@ public abstract class VarHandle {
* but with no assurance of memory ordering effects with respect to other
* threads.
*
- *
The method signature is of the form {@code (CT, T newValue)void}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T newValue)void}.
*
*
The symbolic type descriptor at the call site of {@code setOpaque}
* must match the access mode type that is the result of calling
@@ -595,14 +598,14 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T newValue)}
* , statically represented using varargs.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -616,7 +619,7 @@ public abstract class VarHandle {
* Returns the value of a variable, and ensures that subsequent loads and
* stores are not reordered before this access.
*
- *
The method signature is of the form {@code (CT)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn)T}.
*
*
The symbolic type descriptor at the call site of {@code getAcquire}
* must match the access mode type that is the result of calling
@@ -629,17 +632,17 @@ public abstract class VarHandle {
* ordering.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT)}
+ * {@code (CT1 ct1, ..., CTn ctn)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the value of the
* variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -650,7 +653,7 @@ public abstract class VarHandle {
* Sets the value of a variable to the {@code newValue}, and ensures that
* prior loads and stores are not reordered after this access.
*
- *
The method signature is of the form {@code (CT, T newValue)void}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T newValue)void}.
*
*
The symbolic type descriptor at the call site of {@code setRelease}
* must match the access mode type that is the result of calling
@@ -663,14 +666,14 @@ public abstract class VarHandle {
* ordering.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T newValue)}
* , statically represented using varargs.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
*/
public final native
@MethodHandle.PolymorphicSignature
@@ -687,7 +690,7 @@ public abstract class VarHandle {
* {@code expectedValue}, as accessed with the memory semantics of
* {@link #getVolatile}.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)boolean}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)boolean}.
*
*
The symbolic type descriptor at the call site of {@code
* compareAndSet} must match the access mode type that is the result of
@@ -695,16 +698,16 @@ public abstract class VarHandle {
* this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return {@code true} if successful, otherwise {@code false} if the
* witness value was not the same as the {@code expectedValue}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -720,7 +723,7 @@ public abstract class VarHandle {
* {@code expectedValue}, as accessed with the memory semantics of
* {@link #getVolatile}.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)T}.
*
*
The symbolic type descriptor at the call site of {@code
* compareAndExchange}
@@ -729,7 +732,7 @@ public abstract class VarHandle {
* on this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the witness value, which
* will be the same as the {@code expectedValue} if successful
@@ -755,7 +758,7 @@ public abstract class VarHandle {
* {@code expectedValue}, as accessed with the memory semantics of
* {@link #getAcquire}.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)T}.
*
*
The symbolic type descriptor at the call site of {@code
* compareAndExchangeAcquire}
@@ -764,17 +767,17 @@ public abstract class VarHandle {
* this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the witness value, which
* will be the same as the {@code expectedValue} if successful
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #set(Object...)
* @see #getAcquire(Object...)
*/
@@ -790,7 +793,7 @@ public abstract class VarHandle {
* {@code expectedValue}, as accessed with the memory semantics of
* {@link #get}.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)T}.
*
*
The symbolic type descriptor at the call site of {@code
* compareAndExchangeRelease}
@@ -799,17 +802,17 @@ public abstract class VarHandle {
* on this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the witness value, which
* will be the same as the {@code expectedValue} if successful
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setRelease(Object...)
* @see #get(Object...)
*/
@@ -830,7 +833,7 @@ public abstract class VarHandle {
*
This operation may fail spuriously (typically, due to memory
* contention) even if the witness value does match the expected value.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)boolean}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)boolean}.
*
*
The symbolic type descriptor at the call site of {@code
* weakCompareAndSetPlain} must match the access mode type that is the result of
@@ -838,17 +841,17 @@ public abstract class VarHandle {
* on this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return {@code true} if successful, otherwise {@code false} if the
* witness value was not the same as the {@code expectedValue} or if this
* operation spuriously failed.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #set(Object...)
* @see #get(Object...)
*/
@@ -867,7 +870,7 @@ public abstract class VarHandle {
*
This operation may fail spuriously (typically, due to memory
* contention) even if the witness value does match the expected value.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)boolean}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)boolean}.
*
*
The symbolic type descriptor at the call site of {@code
* weakCompareAndSet} must match the access mode type that is the
@@ -875,17 +878,17 @@ public abstract class VarHandle {
* on this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return {@code true} if successful, otherwise {@code false} if the
* witness value was not the same as the {@code expectedValue} or if this
* operation spuriously failed.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -904,7 +907,7 @@ public abstract class VarHandle {
*
This operation may fail spuriously (typically, due to memory
* contention) even if the witness value does match the expected value.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)boolean}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)boolean}.
*
*
The symbolic type descriptor at the call site of {@code
* weakCompareAndSetAcquire}
@@ -913,17 +916,17 @@ public abstract class VarHandle {
* on this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return {@code true} if successful, otherwise {@code false} if the
* witness value was not the same as the {@code expectedValue} or if this
* operation spuriously failed.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #set(Object...)
* @see #getAcquire(Object...)
*/
@@ -942,7 +945,7 @@ public abstract class VarHandle {
*
This operation may fail spuriously (typically, due to memory
* contention) even if the witness value does match the expected value.
*
- *
The method signature is of the form {@code (CT, T expectedValue, T newValue)boolean}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)boolean}.
*
*
The symbolic type descriptor at the call site of {@code
* weakCompareAndSetRelease}
@@ -951,17 +954,17 @@ public abstract class VarHandle {
* on this VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T expectedValue, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T expectedValue, T newValue)}
* , statically represented using varargs.
* @return {@code true} if successful, otherwise {@code false} if the
* witness value was not the same as the {@code expectedValue} or if this
* operation spuriously failed.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setRelease(Object...)
* @see #get(Object...)
*/
@@ -976,7 +979,7 @@ public abstract class VarHandle {
* previous value, as accessed with the memory semantics of
* {@link #getVolatile}.
*
- *
The method signature is of the form {@code (CT, T newValue)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T newValue)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndSet}
* must match the access mode type that is the result of calling
@@ -984,17 +987,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T newValue)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1009,7 +1012,7 @@ public abstract class VarHandle {
* previous value, as accessed with the memory semantics of
* {@link #getAcquire}.
*
- *
The method signature is of the form {@code (CT, T newValue)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T newValue)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndSetAcquire}
* must match the access mode type that is the result of calling
@@ -1017,17 +1020,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T newValue)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1042,7 +1045,7 @@ public abstract class VarHandle {
* previous value, as accessed with the memory semantics of
* {@link #get}.
*
- *
The method signature is of the form {@code (CT, T newValue)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T newValue)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndSetRelease}
* must match the access mode type that is the result of calling
@@ -1050,17 +1053,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T newValue)}
+ * {@code (CT1 ct1, ..., CTn ctn, T newValue)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1078,7 +1081,7 @@ public abstract class VarHandle {
* previous value, as accessed with the memory semantics of
* {@link #getVolatile}.
*
- *
The method signature is of the form {@code (CT, T value)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T value)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndAdd}
* must match the access mode type that is the result of calling
@@ -1086,17 +1089,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T value)}
+ * {@code (CT1 ct1, ..., CTn ctn, T value)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1111,7 +1114,7 @@ public abstract class VarHandle {
* previous value, as accessed with the memory semantics of
* {@link #getAcquire}.
*
- *
The method signature is of the form {@code (CT, T value)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T value)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndAddAcquire}
* must match the access mode type that is the result of calling
@@ -1119,17 +1122,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T value)}
+ * {@code (CT1 ct1, ..., CTn ctn, T value)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1144,7 +1147,7 @@ public abstract class VarHandle {
* previous value, as accessed with the memory semantics of
* {@link #get}.
*
- *
The method signature is of the form {@code (CT, T value)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T value)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndAddRelease}
* must match the access mode type that is the result of calling
@@ -1152,17 +1155,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T value)}
+ * {@code (CT1 ct1, ..., CTn ctn, T value)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1185,7 +1188,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical OR is performed instead of a bitwise OR.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseOr}
* must match the access mode type that is the result of calling
@@ -1193,17 +1196,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1222,7 +1225,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical OR is performed instead of a bitwise OR.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseOrAcquire}
* must match the access mode type that is the result of calling
@@ -1230,17 +1233,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #set(Object...)
* @see #getAcquire(Object...)
*/
@@ -1259,7 +1262,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical OR is performed instead of a bitwise OR.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseOrRelease}
* must match the access mode type that is the result of calling
@@ -1267,17 +1270,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setRelease(Object...)
* @see #get(Object...)
*/
@@ -1296,7 +1299,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical AND is performed instead of a bitwise AND.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseAnd}
* must match the access mode type that is the result of calling
@@ -1304,17 +1307,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1333,7 +1336,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical AND is performed instead of a bitwise AND.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseAndAcquire}
* must match the access mode type that is the result of calling
@@ -1341,17 +1344,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #set(Object...)
* @see #getAcquire(Object...)
*/
@@ -1370,7 +1373,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical AND is performed instead of a bitwise AND.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseAndRelease}
* must match the access mode type that is the result of calling
@@ -1378,17 +1381,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setRelease(Object...)
* @see #get(Object...)
*/
@@ -1407,7 +1410,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical XOR is performed instead of a bitwise XOR.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseXor}
* must match the access mode type that is the result of calling
@@ -1415,17 +1418,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setVolatile(Object...)
* @see #getVolatile(Object...)
*/
@@ -1444,7 +1447,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical XOR is performed instead of a bitwise XOR.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseXorAcquire}
* must match the access mode type that is the result of calling
@@ -1452,17 +1455,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #set(Object...)
* @see #getAcquire(Object...)
*/
@@ -1481,7 +1484,7 @@ public abstract class VarHandle {
*
If the variable type is the non-integral {@code boolean} type then a
* logical XOR is performed instead of a bitwise XOR.
*
- *
The method signature is of the form {@code (CT, T mask)T}.
+ *
The method signature is of the form {@code (CT1 ct1, ..., CTn ctn, T mask)T}.
*
*
The symbolic type descriptor at the call site of {@code getAndBitwiseXorRelease}
* must match the access mode type that is the result of calling
@@ -1489,17 +1492,17 @@ public abstract class VarHandle {
* VarHandle.
*
* @param args the signature-polymorphic parameter list of the form
- * {@code (CT, T mask)}
+ * {@code (CT1 ct1, ..., CTn ctn, T mask)}
* , statically represented using varargs.
* @return the signature-polymorphic result that is the previous value of
* the variable
* , statically represented using {@code Object}.
* @throws UnsupportedOperationException if the access mode is unsupported
* for this VarHandle.
- * @throws WrongMethodTypeException if the access mode type is not
- * compatible with the caller's symbolic type descriptor.
- * @throws ClassCastException if the access mode type is compatible with the
- * caller's symbolic type descriptor, but a reference cast fails.
+ * @throws WrongMethodTypeException if the access mode type does not
+ * match the caller's symbolic type descriptor.
+ * @throws ClassCastException if the access mode type matches the caller's
+ * symbolic type descriptor, but a reference cast fails.
* @see #setRelease(Object...)
* @see #get(Object...)
*/
@@ -1790,7 +1793,7 @@ public abstract class VarHandle {
/**
* Returns the {@code VarHandle} signature-polymorphic method name
- * associated with this {@code AccessMode} value
+ * associated with this {@code AccessMode} value.
*
* @return the signature-polymorphic method name
* @see #valueFromMethodName
@@ -1861,14 +1864,13 @@ public abstract class VarHandle {
}
/**
- * Obtains the canonical access mode type for this VarHandle and a given
- * access mode.
+ * Obtains the access mode type for this VarHandle and a given access mode.
*
*
The access mode type's parameter types will consist of a prefix that
* is the coordinate types of this VarHandle followed by further
- * types as defined by the access mode's method.
+ * types as defined by the access mode method.
* The access mode type's return type is defined by the return type of the
- * access mode's method.
+ * access mode method.
*
* @param accessMode the access mode, corresponding to the
* signature-polymorphic method of the same name
@@ -1891,7 +1893,7 @@ public abstract class VarHandle {
*
*
The return of a {@code false} value for a given access mode indicates
* that an {@code UnsupportedOperationException} is thrown on invocation
- * of the corresponding access mode's signature-polymorphic method.
+ * of the corresponding access mode method.
*
* @param accessMode the access mode, corresponding to the
* signature-polymorphic method of the same name
@@ -1908,7 +1910,7 @@ public abstract class VarHandle {
*
* @apiNote This method, for a VarHandle {@code vh} and access mode
* {@code {access-mode}}, returns a method handle that is equivalent to
- * method handle {@code bhm} in the following code (though it may be more
+ * method handle {@code bmh} in the following code (though it may be more
* efficient):
*
{@code
* MethodHandle mh = MethodHandles.varHandleExactInvoker(
diff --git a/jdk/src/java.base/share/classes/java/net/HttpURLConnection.java b/jdk/src/java.base/share/classes/java/net/HttpURLConnection.java
index 9e428e59584..448034e6225 100644
--- a/jdk/src/java.base/share/classes/java/net/HttpURLConnection.java
+++ b/jdk/src/java.base/share/classes/java/net/HttpURLConnection.java
@@ -54,7 +54,7 @@ import java.util.Date;
* Security permissions
*
* If a security manager is installed, and if a method is called which results in an
- * attempt to open a connection, the caller must possess either:-
+ * attempt to open a connection, the caller must possess either:
*
- * More specifically, this method returns true if:
+ * More specifically, this method returns true if: *
+ *
+ * is implied by this permission's algorithm name, and
+ * equal to this permission's maximum allowable key size, and
+ * implied by this permission's algorithm parameter spec, and
null exemption mechanism
- * implies any other exemption mechanism).
+ * implies any other exemption mechanism).{@code
* permission [,
* [[, ][,
* [, , ]]]];
+ * }
*
* @author Sharon Liu
*
@@ -526,8 +528,7 @@ final class CryptoPolicyParser {
/**
* Each grant entry in the policy configuration file is represented by a
- * GrantEntry object. - * + * GrantEntry object. *
* For example, the entry *
@@ -587,8 +588,7 @@ final class CryptoPolicyParser {
/**
* Each crypto permission entry in the policy configuration file is
- * represented by a CryptoPermissionEntry object.
- *
+ * represented by a CryptoPermissionEntry object.
*
* For example, the entry
*
diff --git a/jdk/src/java.management.rmi/share/classes/javax/management/remote/rmi/package.html b/jdk/src/java.management.rmi/share/classes/javax/management/remote/rmi/package.html
index 9669be24397..fb58ff80547 100644
--- a/jdk/src/java.management.rmi/share/classes/javax/management/remote/rmi/package.html
+++ b/jdk/src/java.management.rmi/share/classes/javax/management/remote/rmi/package.html
@@ -98,7 +98,7 @@ questions.
constructor.
- Connector addresses generated by the
+ Connector addresses generated by the
server
If the serviceURL you specify has an empty URL
@@ -157,7 +157,7 @@ questions.
port.
- Connector addresses based on directory
+ Connector addresses based on directory
entries
As an alternative to the generated addresses just described,
diff --git a/jdk/src/java.management/share/classes/java/lang/management/LockInfo.java b/jdk/src/java.management/share/classes/java/lang/management/LockInfo.java
index 91e5545e387..108b3c9ae59 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/LockInfo.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/LockInfo.java
@@ -34,7 +34,7 @@ import sun.management.LockInfoCompositeData;
* an ownable synchronizer, or the {@link Condition Condition}
* object associated with synchronizers.
*
- * An ownable synchronizer is
+ * An ownable synchronizer is
* a synchronizer that may be exclusively owned by a thread and uses
* {@link AbstractOwnableSynchronizer AbstractOwnableSynchronizer}
* (or its subclass) to implement its synchronization property.
@@ -42,7 +42,7 @@ import sun.management.LockInfoCompositeData;
* the read-lock) of {@link ReentrantReadWriteLock ReentrantReadWriteLock} are
* two examples of ownable synchronizers provided by the platform.
*
- *
MXBean Mapping
+ * MXBean Mapping
* {@code LockInfo} is mapped to a {@link CompositeData CompositeData}
* as specified in the {@link #from from} method.
*
@@ -105,10 +105,11 @@ public class LockInfo {
* given {@code CompositeData}.
* The given {@code CompositeData} must contain the following attributes:
*
- *
+ *
+ *
*
- * Attribute Name
- * Type
+ * Attribute Name
+ * Type
*
*
* className
diff --git a/jdk/src/java.management/share/classes/java/lang/management/ManagementFactory.java b/jdk/src/java.management/share/classes/java/lang/management/ManagementFactory.java
index 9a6252add85..90018468ff9 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/ManagementFactory.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/ManagementFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -67,7 +67,7 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* the management interface of a component of the Java virtual
* machine.
*
- * Platform MXBeans
+ * Platform MXBeans
*
* A platform MXBean is a managed bean that
* conforms to the JMX
@@ -83,7 +83,7 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* See
* the specification of MXBeans for details.
*
- *
+ *
*
Each platform MXBean is a {@link PlatformManagedObject}
* and it has a unique
* {@link javax.management.ObjectName ObjectName} for
@@ -141,7 +141,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* interfaces:
*
*
- *
+ *
+ *
*
* Management Interface
* ObjectName
@@ -184,7 +185,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* the following management interfaces.
*
*
- *
+ *
+ *
*
* Management Interface
* ObjectName
@@ -201,7 +203,8 @@ import sun.management.spi.PlatformMBeanProvider.PlatformComponent;
* A Java virtual machine may have one or more instances of the following
* management interfaces.
*
- *
+ *
+ *
*
* Management Interface
* ObjectName
diff --git a/jdk/src/java.management/share/classes/java/lang/management/ManagementPermission.java b/jdk/src/java.management/share/classes/java/lang/management/ManagementPermission.java
index 31d00cf1c7e..8c31a32a707 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/ManagementPermission.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/ManagementPermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -34,7 +34,8 @@ package java.lang.management;
* provides a summary description of what the permission allows,
* and discusses the risks of granting code the permission.
*
- *
+ *
+ *
*
* Permission Target Name
* What the Permission Allows
diff --git a/jdk/src/java.management/share/classes/java/lang/management/MemoryNotificationInfo.java b/jdk/src/java.management/share/classes/java/lang/management/MemoryNotificationInfo.java
index b5a5856794d..881bdcf90b1 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/MemoryNotificationInfo.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/MemoryNotificationInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -212,10 +212,11 @@ public class MemoryNotificationInfo {
* The given {@code CompositeData} must contain
* the following attributes:
*
- *
+ *
+ *
*
- * Attribute Name
- * Type
+ * Attribute Name
+ * Type
*
*
* poolName
diff --git a/jdk/src/java.management/share/classes/java/lang/management/MemoryPoolMXBean.java b/jdk/src/java.management/share/classes/java/lang/management/MemoryPoolMXBean.java
index 6a151910397..06158979745 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/MemoryPoolMXBean.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/MemoryPoolMXBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -71,7 +71,7 @@ package java.lang.management;
* (only supported by some garbage-collected memory pools)
*
*
- * 1. Memory Usage
+ * 1. Memory Usage
*
* The {@link #getUsage} method provides an estimate
* of the current usage of a memory pool.
@@ -86,14 +86,14 @@ package java.lang.management;
* the current memory usage. An implementation should document when
* this is the case.
*
- * 2. Peak Memory Usage
+ * 2. Peak Memory Usage
*
* The Java virtual machine maintains the peak memory usage of a memory
* pool since the virtual machine was started or the peak was reset.
* The peak memory usage is returned by the {@link #getPeakUsage} method
* and reset by calling the {@link #resetPeakUsage} method.
*
- * 3. Usage Threshold
+ * 3. Usage Threshold
*
* Each memory pool has a manageable attribute
* called the usage threshold which has a default value supplied
@@ -141,7 +141,7 @@ package java.lang.management;
* threshold notification mechanisms.
*
*
- * - Polling
+ *
- Polling
*
* An application can continuously monitor its memory usage
* by calling either the {@link #getUsage} method for all
@@ -231,7 +231,7 @@ package java.lang.management;
* }
*
*
- * - Usage Threshold Notifications
+ *
- Usage Threshold Notifications
*
* Usage threshold notification will be emitted by {@link MemoryMXBean}.
* When the Java virtual machine detects that the memory usage of
@@ -304,7 +304,7 @@ package java.lang.management;
*
*
*
- * 4. Collection Usage Threshold
+ * 4. Collection Usage Threshold
*
* Collection usage threshold is a manageable attribute only applicable
* to some garbage-collected memory pools.
diff --git a/jdk/src/java.management/share/classes/java/lang/management/MemoryUsage.java b/jdk/src/java.management/share/classes/java/lang/management/MemoryUsage.java
index 39e0019f184..66c78d93042 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/MemoryUsage.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/MemoryUsage.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -36,10 +36,11 @@ import sun.management.MemoryUsageCompositeData;
* the heap or non-heap memory of the Java virtual machine as a whole.
*
* A {@code MemoryUsage} object contains four values:
- *
+ *
+ *
*
- * {@code init}
- * represents the initial amount of memory (in bytes) that
+ * {@code init}
+ * represents the initial amount of memory (in bytes) that
* the Java virtual machine requests from the operating system
* for memory management during startup. The Java virtual machine
* may request additional memory from the operating system and
@@ -48,13 +49,13 @@ import sun.management.MemoryUsageCompositeData;
*
*
*
- * {@code used}
- * represents the amount of memory currently used (in bytes).
+ * {@code used}
+ * represents the amount of memory currently used (in bytes).
*
*
*
- * {@code committed}
- * represents the amount of memory (in bytes) that is
+ * {@code committed}
+ * represents the amount of memory (in bytes) that is
* guaranteed to be available for use by the Java virtual machine.
* The amount of committed memory may change over time (increase
* or decrease). The Java virtual machine may release memory to
@@ -64,8 +65,8 @@ import sun.management.MemoryUsageCompositeData;
*
*
*
- * {@code max}
- * represents the maximum amount of memory (in bytes)
+ * {@code max}
+ * represents the maximum amount of memory (in bytes)
* that can be used for memory management. Its value may be undefined.
* The maximum amount of memory may change over time if defined.
* The amount of used and committed memory will always be less than
@@ -252,10 +253,11 @@ public class MemoryUsage {
* must contain the following attributes:
*
*
- *
+ *
+ *
*
- * Attribute Name
- * Type
+ * Attribute Name
+ * Type
*
*
* init
diff --git a/jdk/src/java.management/share/classes/java/lang/management/MonitorInfo.java b/jdk/src/java.management/share/classes/java/lang/management/MonitorInfo.java
index 78601f85072..81b66afd2b4 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/MonitorInfo.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/MonitorInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -106,10 +106,11 @@ public class MonitorInfo extends LockInfo {
*
* mapped type for the {@link LockInfo} class:
*
- *
+ *
+ *
*
- * Attribute Name
- * Type
+ * Attribute Name
+ * Type
*
*
* lockedStackFrame
diff --git a/jdk/src/java.management/share/classes/java/lang/management/RuntimeMXBean.java b/jdk/src/java.management/share/classes/java/lang/management/RuntimeMXBean.java
index 866567a366d..def09b4a00b 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/RuntimeMXBean.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/RuntimeMXBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -312,7 +312,8 @@ public interface RuntimeMXBean extends PlatformManagedObject {
* {@link javax.management.openmbean.TabularData TabularData}
* with two items in each row as follows:
*
- *
+ *
+ *
*
* Item Name
* Item Type
diff --git a/jdk/src/java.management/share/classes/java/lang/management/ThreadInfo.java b/jdk/src/java.management/share/classes/java/lang/management/ThreadInfo.java
index edf758e8731..5cc5861c2d6 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/ThreadInfo.java
+++ b/jdk/src/java.management/share/classes/java/lang/management/ThreadInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -61,7 +61,7 @@ import static java.lang.Thread.State.*;
* Thread priority
*
*
- * Synchronization Statistics
+ * Synchronization Statistics
*
* - The number of times that the thread has blocked for
* synchronization or waited for notification.
@@ -695,10 +695,11 @@ public class ThreadInfo {
* The given {@code CompositeData} must contain the following attributes
* unless otherwise specified below:
*
- *
+ *
+ *
*
- * Attribute Name
- * Type
+ * Attribute Name
+ * Type
*
*
* threadId
@@ -759,16 +760,17 @@ public class ThreadInfo {
* {@code java.lang.String}
*
*
- * stackTrace
+ * stackTrace
* {@code javax.management.openmbean.CompositeData[]}
*
* Each element is a {@code CompositeData} representing
* StackTraceElement containing the following attributes:
*
- *
+ *
+ *
*
- * Attribute Name
- * Type
+ * Attribute Name
+ * Type
*
*
* moduleName
diff --git a/jdk/src/java.management/share/classes/java/lang/management/package.html b/jdk/src/java.management/share/classes/java/lang/management/package.html
index 652253b39bc..67246f00e1e 100644
--- a/jdk/src/java.management/share/classes/java/lang/management/package.html
+++ b/jdk/src/java.management/share/classes/java/lang/management/package.html
@@ -32,7 +32,7 @@ Java virtual machine and other components in the Java runtime.
It allows both local and remote
monitoring and management of the running Java virtual machine.
-Platform MXBean
+Platform MXBean
A platform MXBean is a managed bean that
conforms to the JMX
@@ -40,7 +40,7 @@ Instrumentation Specification and only uses a set of basic data types.
Each platform MXBean is a {@link java.lang.management.PlatformManagedObject}
with a unique
{@linkplain java.lang.management.PlatformManagedObject#getObjectName name}.
-
ManagementFactory
+ManagementFactory
The {@link java.lang.management.ManagementFactory} class is the management
factory class for the Java platform. This class provides a set of
@@ -58,7 +58,7 @@ the specification of the management interface.
This is a single MBeanServer that can be shared by different managed
components running within the same Java virtual machine.
-
Interoperability
+Interoperability
A management application and a platform MBeanServer of a running
virtual machine can interoperate
@@ -72,7 +72,7 @@ open type when being accessed via MBeanServer interface.
See the
MXBean specification for details.
-
Ways to Access MXBeans
+Ways to Access MXBeans
An application can monitor the instrumentation of the
Java virtual machine and the runtime in the following ways:
@@ -163,7 +163,7 @@ Java virtual machine and the runtime in the following ways:
-
Platform Extension
+Platform Extension
A Java virtual machine implementation may add its platform extension to
the management interface by defining platform-dependent
diff --git a/jdk/src/java.management/share/classes/javax/management/Descriptor.java b/jdk/src/java.management/share/classes/javax/management/Descriptor.java
index 0b25e34b04f..8945dfb56fe 100644
--- a/jdk/src/java.management/share/classes/javax/management/Descriptor.java
+++ b/jdk/src/java.management/share/classes/javax/management/Descriptor.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -96,7 +96,8 @@ import javax.management.openmbean.OpenType;
* of the mapped Java type, called opendata(J) in the MXBean type mapping rules.
*
- *
+ *
+ *
*
* Name Type Used in Meaning
*
@@ -330,7 +331,8 @@ import javax.management.openmbean.OpenType;
* interest outside Model MBeans, for example. But only Model MBeans have
* a predefined behavior for these fields.
*
- *
+ *
+ *
*
* Name Type Used in Meaning
*
diff --git a/jdk/src/java.management/share/classes/javax/management/DescriptorKey.java b/jdk/src/java.management/share/classes/javax/management/DescriptorKey.java
index 814e234d35c..592cb799f32 100644
--- a/jdk/src/java.management/share/classes/javax/management/DescriptorKey.java
+++ b/jdk/src/java.management/share/classes/javax/management/DescriptorKey.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -94,7 +94,8 @@ import java.lang.annotation.*;
* then the resulting {@code Descriptor} will contain the following
* fields:
*
- *
+ *
+ *
* Name Value
* units "bytes"
* descriptionResourceKey "bytes.key"
@@ -143,7 +144,8 @@ import java.lang.annotation.*;
* or an array of annotations. The value of the field is derived from
* the value of the annotation element as follows:
*
- *
+ *
+ *
* Annotation element Descriptor field
* Primitive value ({@code 5}, {@code false}, etc)
* Wrapped value ({@code Integer.valueOf(5)},
diff --git a/jdk/src/java.management/share/classes/javax/management/MBeanPermission.java b/jdk/src/java.management/share/classes/javax/management/MBeanPermission.java
index 5aa18b70960..c134ac5ef56 100644
--- a/jdk/src/java.management/share/classes/javax/management/MBeanPermission.java
+++ b/jdk/src/java.management/share/classes/javax/management/MBeanPermission.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -133,7 +133,7 @@ import java.security.Permission;
* any value (including another null value) but does not imply any
* other value.
*
- * The possible actions are these:
+ * The possible actions are these:
*
*
* - addNotificationListener
diff --git a/jdk/src/java.management/share/classes/javax/management/MXBean.java b/jdk/src/java.management/share/classes/javax/management/MXBean.java
index ca5402effda..c69ebe462fe 100644
--- a/jdk/src/java.management/share/classes/javax/management/MXBean.java
+++ b/jdk/src/java.management/share/classes/javax/management/MXBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -93,7 +93,8 @@ import javax.management.openmbean.TabularType;
Standard MBean concept. Here is how a managed object might be
represented as a Standard MBean, and as an MXBean:
-
+
+
Standard MBean MXBean
@@ -133,7 +134,8 @@ public interface MemoryPoolMXBean {
So, we might define MemoryUsage like this:
-
+
+
Standard MBean MXBean
@@ -195,7 +197,8 @@ public class MemoryUsage {
This becomes clearer if we compare what the clients of the two
models might look like:
-
+
+
Standard MBean MXBean
@@ -232,7 +235,8 @@ String name = (String)
managed objects when you know the model beforehand, regardless
of whether you are using Standard MBeans or MXBeans:
-
+
+
Standard MBean MXBean
@@ -265,7 +269,8 @@ long used = usage.getUsed();
Implementing the MemoryPool object works similarly for both
Standard MBeans and MXBeans.
-
+
+
Standard MBean MXBean
@@ -292,7 +297,8 @@ public class MemoryPool
Registering the MBean in the MBean Server works in the same way
in both cases:
-
+
+
Standard MBean MXBean
@@ -478,13 +484,14 @@ public class MemoryPool
The following table summarizes the type mapping rules.
-
+
+
Java type J
opentype(J)
opendata(J)
-
+
{@code int}, {@code boolean}, etc
(the 8 primitive Java types)
diff --git a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java
index 447273ed9be..ec834ce8e5e 100644
--- a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java
+++ b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java
@@ -57,7 +57,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.
*
- *
+ *
+ *
* Name Type Meaning
* name String
* Attribute name.
diff --git a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java
index 9bec078f6f3..cbdd549b13c 100644
--- a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java
+++ b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java
@@ -58,7 +58,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.
*
- *
+ *
+ *
* Name Type Meaning
* name String
* Constructor name.
diff --git a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanInfo.java b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanInfo.java
index 642cddd3d27..6dd7e2adfb6 100644
--- a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanInfo.java
+++ b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanInfo.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -165,7 +165,8 @@ public interface ModelMBeanInfo
* following. Note that when the Type in this table is Number, a String
* that is the decimal representation of a Long can also be used.
*
- *
+ *
+ *
* Name Type Meaning
* name String
* MBean name.
diff --git a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java
index 507ba1a34a6..a7545023218 100644
--- a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java
+++ b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java
@@ -56,7 +56,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.
*
- *
+ *
+ *
* Name Type Meaning
* name String
* Notification name.
diff --git a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java
index a0541b678f3..123ed9418eb 100644
--- a/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java
+++ b/jdk/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java
@@ -59,7 +59,8 @@ import javax.management.RuntimeOperationsException;
* Note that when the Type in this table is Number, a String that is the decimal
* representation of a Long can also be used.
*
- *
+ *
+ *
* Name Type Meaning
* name String
* Operation name.
diff --git a/jdk/src/java.management/share/classes/javax/management/modelmbean/package.html b/jdk/src/java.management/share/classes/javax/management/modelmbean/package.html
index ddcd3d5545a..6d916044107 100644
--- a/jdk/src/java.management/share/classes/javax/management/modelmbean/package.html
+++ b/jdk/src/java.management/share/classes/javax/management/modelmbean/package.html
@@ -110,7 +110,7 @@ mbs.invoke(mapName, "get", new Object[] {"key"}, new String[] {Object.class.getN
// returns "value"
- Package Specification
+ Package Specification
- See the JMX 1.4 Specification
diff --git a/jdk/src/java.management/share/classes/javax/management/openmbean/package.html b/jdk/src/java.management/share/classes/javax/management/openmbean/package.html
index 1c852fc4260..36ad2bfece4 100644
--- a/jdk/src/java.management/share/classes/javax/management/openmbean/package.html
+++ b/jdk/src/java.management/share/classes/javax/management/openmbean/package.html
@@ -77,7 +77,7 @@ questions.
describes the items in the
CompositeData instances
for the attribute.
- Default values and constraints
+ Default values and constraints
In Open MBeans, attributes and parameters can have default values
and/or constraints associated with them in the {@code
diff --git a/jdk/src/java.management/share/classes/javax/management/remote/JMXConnectionNotification.java b/jdk/src/java.management/share/classes/javax/management/remote/JMXConnectionNotification.java
index 51c233d5411..5bf136430b6 100644
--- a/jdk/src/java.management/share/classes/javax/management/remote/JMXConnectionNotification.java
+++ b/jdk/src/java.management/share/classes/javax/management/remote/JMXConnectionNotification.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -40,11 +40,12 @@ import javax.management.ObjectName;
*
*
The notification type is one of the following:
*
- *