Mandy, I think this looks good. Just a few minor comments...
The spec wording is hard, since the method is offering a conditional initialization. I guess I expected to see something like “initializes targetClass, if it has not been initialized already”, or some such. The input and output is the same class instance. I don’t quite get that from the spec. Can these be coupled together more obviously by their descriptions? Maybe "@return targetClass, that is initialized" -Chris. > On 4 Jun 2020, at 00:16, Mandy Chung <mandy.ch...@oracle.com> wrote: > > This proposes a new `Lookup::ensureClassInitialized` API as a replacement > for `sun.misc.Unsafe::ensureClassInitialized`.The Lookup object must have > the access to the given class being initialized. > > CSR: https://bugs.openjdk.java.net/browse/JDK-8245871 > > webrev: > http://cr.openjdk.java.net/~mchung/jdk15/webrevs/8235521/webrev.01/ > > This patch converts the JDK use of > `jdk.internal.misc.Unsafe::ensureClassInitialized` to > call this new API where appropriate. `Unsafe::ensureClassInitialized` remains > for java.lang.invoke.* internal implementation use. > > A framework can use `Lookup::privateLookupIn` to access a class in another > module if the module authorizes it by opening the packages for it to access. > Or a user can produce a less privileged lookup by Lookup::dropLookupMode and > pass it to the framework. > > `Class::ensureInitialized` was considered as an alternative. The downside for > this option is that it would be caller sensitive in order to ensure the > caller has the proper access to this class. And it may not work for > frameworks which have no access to user classes. It would have to fallback > toClass::forName` limited solution. > > Thanks > Mandy >