Review Request: JDK-8235521: Replacement API for Unsafe::ensureClassInitialized
Mandy Chung
mandy.chung at oracle.com
Thu Jun 4 19:21:38 UTC 2020
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.chung at 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
>>
More information about the core-libs-dev
mailing list