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
> 

Reply via email to