RFR: JDK-8242451 : ensure semantics of non-capturing lambdas are preserved independent of execution mode

Mandy Chung mandy.chung at oracle.com
Tue Aug 25 17:23:56 UTC 2020



On 8/25/20 3:16 AM, Gilles Duboscq wrote:
>>
>> Since this patch caches a singleton instance in the generated class, 
>> it could apply to the eager initialization case as well and replace 
>> the current use of core reflection to new an instance except that the 
>> target of the returning callsite would always be the singleton object 
>> (the result of invoking the static getter method handle).  I wonder 
>> if there is any performance difference.  This is just a thought that 
>> we can file a JBS issue to follow up.
>>
>> Can you add a test case for this fix?
>
> I could write a test that generates different output depending on 
> whether a singleton or a fresh instance is returned.
> Then i can compare the output when running with 
> `jdk.internal.lambda.disableEagerInitialization` set to `true` and 
> `false`.
> What is the recommended way of comparing 2 runs like that in jtreg?
>

It can simply verify if the static field is only present when 
disableEagerInitialization is true; otherwise such static field should 
not exist.

> I have updated the webrev: 
> https://cr.openjdk.java.net/~gdub/8242451/webrev.1/
>

Looks okay to me.

Nit: `Class::descriptorString` can be used instead of 
BytecodeDescriptor::unparse.

418 String lambdaTypeDescriptor = 
BytecodeDescriptor.unparse(invokedType.returnType());



> From your other mail:
>
>> Should this patch be a workaround to existing releases rather than 
>> the main line?   As Brian mentions, lambda proxy class may become 
>> inline class in valhalla repo (Roger has a patch already).   The 
>> earlier fixing those programs the better.
>
> Indeed if we know this is landing in this cycle in the main repo 
> there's no point with my fix. Could you point me at the issue number 
> or mail thread where this patch is being discussed?
>

As Brian replied, integration of valhalla is not imminent. JDK-8205668 
tracks the work to make lambda proxies as inline classes for the 
valhalla repo (*not* main line).

Mandy


More information about the core-libs-dev mailing list