On Mon, 18 Jul 2022 19:01:28 GMT, Ioi Lam <ik...@openjdk.org> wrote:

>> Since the impact of this bug can be big, and the fix is simple and low risk 
>> (just avoids doing optimizations), I'd like to put this into JDK 19 before 
>> RDP2 (Jul 21).
>> 
>> CDS cannot handle Lambda proxy classes that are generated in the 
>> useImplMethodHandle mode. This could happen with classfiles generated by JDK 
>> 8 or JDK 11 that access protected methods in a base class from a different 
>> package. E.g.,
>> 
>> 
>> class pkg1.Base {
>>     protected void doit(String s) {
>>         System.out.println(s);
>>     }
>> }
>> class pkg2.Child  extends pkg1.Base {
>>     void test() {
>>         Optional<String> opt = Optional.of("foo");
>>         opt.ifPresent(this::doit);
>>     }
>> }
>> 
>> 
>> More details of useImplMethodHandle can be found here: 
>> https://github.com/openjdk/jdk/blob/522b65743ca10fcba0a27d25b8fa11319999e228/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java#L183-L191
>> 
>> More details about the condition that triggers the error can be found in the 
>> test file Child.jcod.
>
> Ioi Lam has updated the pull request incrementally with one additional commit 
> since the last revision:
> 
>   fixed tier4 failure with hotspot_appcds_dynamic testing

Marked as reviewed by ccheung (Reviewer).

-------------

PR: https://git.openjdk.org/jdk19/pull/146

Reply via email to