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