The only way I see to test this (without calling LMF directly) is to inspect 
the stack trace created in a static initialiser of a lambda super-type. The 
stack trace should not contain LMF when 
-Djdk.internal.lambda.disableEagerInitialization=true. Let me know if this kind 
of a test reasonable; I can easily add it. — Vojin

> On 29 Oct 2019, at 00:29, Paul Sandoz <paul.san...@oracle.com> wrote:
> 
>> 
>> On Oct 28, 2019, at 3:29 PM, mark.reinh...@oracle.com wrote:
>> 
>> 2019/10/28 11:10:25 -0700, vojin.jovano...@oracle.com:
>>> This email proposes a change to the LambdaMetaFactory that allows to
>>> disable eager initialization (with Unsafe) of generated lambdas. ...
>>> 
>>> ...
>>> 
>>> After the discussion with Brian Goetz, we have trimmed down to the
>>> following change:
>>> 
>>> https://bugs.openjdk.java.net/secure/attachment/85247/lambda-disable-initialization.diff
>>> 
>>> The evolution of this change can be found at the issue: 
>>> 
>>> https://bugs.openjdk.java.net/browse/JDK-8232806
>> 
>> Vojin -- I’d be happy to sponsor this change on your behalf.
>> 
>> I’ve posted a webrev that incorporates the suggestions that Paul and
>> Rémi made in the JBS issue:
>> 
>> https://cr.openjdk.java.net/~mr/rev/8232806/
>> 
>> Paul, Rémi -- please make sure that I understood your suggestions
>> correctly
> 
> Looks good to me.
> 
> I don’t know of an easy way to test when the new sys property is true that 
> the implementing class is not initialized. Seems to require an explicit call 
> to LMF, cracking open the calls site’s target, and calling 
> Unsafe.shouldBeInitialized (presuming initialization is not tickled before 
> that call and the call works!).  Perhaps a future exercise if someone wanna 
> takes that on.
> 
> Paul.

Reply via email to