> 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