On Fri, 20 Nov 2020 20:23:27 GMT, Mandy Chung <mch...@openjdk.org> wrote:
>> src/java.base/share/classes/java/lang/invoke/MethodHandles.java line 2148: >> >>> 2146: * (unlike private static fields that are accessible to >>> nestmates). >>> 2147: * Care should be taken w.r.t. mutability for example when >>> passing >>> 2148: * an array or other mutable structure through the class data. >> >> I don't think it's necessarily clear _why_/_how_ care should be taken from >> this text. I suggest: >> Suggestion: >> >> * Care should be taken w.r.t. mutability for example when passing >> * an array or other mutable structure through the class data. Such >> * a constant should not be mutated, as downstream consumers of >> * this constant, such as other constants, are not guaranteed to see >> * the updated value, depending on the timing of their resolution. > > What about: > > --- a/src/java.base/share/classes/java/lang/invoke/MethodHandles.java > +++ b/src/java.base/share/classes/java/lang/invoke/MethodHandles.java > @@ -2156,8 +2156,10 @@ public class MethodHandles { > * (unlike private static fields that are accessible to nestmates). > * Care should be taken w.r.t. mutability for example when passing > * an array or other mutable structure through the class data. > - * If you use a {@code List}, it is a good practice to make it > unmodifiable > - * for example via {@link List#of List::of}. > + * Changing any value stored at the class data at runtime may lead to > + * unpredictable behavior. > + * If the class data is a {@code List}, it is a good practice to > make it > + * unmodifiable for example via {@link List#of List::of}. > * > * @param bytes the class bytes > * @param classData pre-initialized class data Looks good! ------------- PR: https://git.openjdk.java.net/jdk/pull/1171