There are still ongoing discussions (as comments on 
https://bugs.openjdk.java.net/browse/JDK-8232806) as to whether the performance 
implications and loss of reference equality caused by this change are 
acceptable for the GraalVM Native Image. 

I would suggest to hold off merging this change until these discussions are 
resolved. The alternative implementation that is discussed follows:

  https://vjovanov.github.io/webrevs/8233090/

Cheers,
- Vojin

> On 29 Oct 2019, at 18:01, Paul Sandoz <paul.san...@oracle.com> wrote:
> 
> 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.jovano...@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.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