On Tue, 5 Nov 2024 18:29:52 GMT, Chen Liang <li...@openjdk.org> wrote:
> After the ClassFile API migration, when serializable lambdas are requested > for hidden class callers, illegal class name is generated for the > serialization methods, which previously had legal yet unusable class names, > as hidden classes cannot be described by a `CONSTANT_Class_info`. > > This patch restores a similar older behavior of using legal yet unusable > class names. Previously, the invalid `.` in hidden class names was replaced > by a `/` as if a package separator; this patch changes it to a `_` like that > in the generated lambda's class name. > > The bug report shows some unintended and erroneous usages of > `LambdaMetafactory`. To clarify and to persuade against misuse, I added a > paragraph of API notes to `LambdaMetafactory`, describing the impact of this > API being designed to support Java language features. In particular, I used > the scenario where people assumed LMf generates weak hidden classes, which > happened in this issue report and in #12493, that misuse can lead to resource > leaks. This pull request has now been integrated. Changeset: 681a57f9 Author: Chen Liang <li...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/681a57f96099a4e434fef0f37fa9cd248357791f Stats: 116 lines in 3 files changed: 113 ins; 0 del; 3 mod 8343064: ClassFormatError: Illegal class name from InnerClassLambdaMetafactory Reviewed-by: jvernee ------------- PR: https://git.openjdk.org/jdk/pull/21912