> 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:

  @calvinccheung comments: fixed typo and removed unnecessary imports

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

Changes:
  - all: https://git.openjdk.org/jdk19/pull/146/files
  - new: https://git.openjdk.org/jdk19/pull/146/files/7122e367..6736b66b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk19&pr=146&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk19&pr=146&range=01-02

  Stats: 3 lines in 2 files changed: 0 ins; 2 del; 1 mod
  Patch: https://git.openjdk.org/jdk19/pull/146.diff
  Fetch: git fetch https://git.openjdk.org/jdk19 pull/146/head:pull/146

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

Reply via email to