RFR: JDK-8232806: The LambdaMetaFactory eagerly initializes generated lambdas

Paul Sandoz paul.sandoz at oracle.com
Tue Oct 29 17:01:50 UTC 2019


Hi Vojin,

I think it would be useful to include such a test (for capturing and non-capturing) to protect against a regression.

Thanks,
Paul.

> On Oct 29, 2019, at 3:57 AM, Vojin Jovanovic <VOJIN.JOVANOVIC at ORACLE.COM> wrote:
> 
> 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.sandoz at oracle.com> wrote:
>> 
>>> 
>>> On Oct 28, 2019, at 3:29 PM, mark.reinhold at oracle.com wrote:
>>> 
>>> 2019/10/28 11:10:25 -0700, vojin.jovanovic at 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.
> 



More information about the core-libs-dev mailing list