Lookup::accessClass sets the precedence to return Class for method
chaining. So this new method follows the existing convention.
Mandy
On 6/4/20 12:31 PM, Florent Guillaume wrote:
Hi,
Why can't it just return void?
Florent
On Thu, Jun 4, 2020 at 9:22 PM Mandy Chung <mandy.ch...@oracle.com
<mailto:mandy.ch...@oracle.com>> wrote:
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
<mailto: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
>>
--
Nuxeo Logo <https://www.nuxeo.com/>
Florent Guillaume Head of R&D LinkedIn
<https://www.linkedin.com/in/fguillaume/> Twitter
<https://twitter.com/efge> Github <https://github.com/efge>
Nuxeo Content Services Platform. Stay ahead.