On 6/4/20 9:43 AM, Chris Hegarty wrote:
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.

I added:
   "This method causes {@code targetClass} to be initialized if it has not been already initialized."

to make it clear.

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"

@return the class that has been initialized.

I changed it to:
         * @return {@code targetClass} that has been initialized

Mandy

-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