On Wed, 15 Feb 2023 22:44:21 GMT, David M. Lloyd <d...@openjdk.org> wrote:
>> The class generated for lambda proxies is now defined as a hidden class. >> This means that the counter, which was used to ensure a unique class name >> and avoid clashes, is now redundant. In addition to performing redundant >> work, this also impacts build reproducibility for native image generators >> which might already have a strategy to cope with hidden classes but cannot >> cope with indeterminate definition order for lambda proxy classes. >> >> This solves JDK-8292914 by making lambda proxy names always be stable >> without any configuration needed. This would also replace #10024. > > David M. Lloyd has refreshed the contents of this pull request, and previous > commits have been removed. The incremental views will show differences > compared to the previous content of the PR. The pull request contains one new > commit since the last revision: > > 8292914: Drop the counter from lambda class names > > The class generated for lambda proxies is now defined as a hidden class. > This means that the counter, which was used to ensure a unique class name and > avoid clashes, is now redundant. In addition to performing redundant work, > this also impacts build reproducibility for native image generators which > might already have a strategy to cope with hidden classes but cannot cope > with indeterminate definition order for lambda proxy classes. > > Additionally, the lambda proxy class dumper is enhanced to prepend a raw > timestamp before the filename. This would address my concern. If the hidden class was defined successfully, use the hidden class name as the filename; otherwise, construct the file name a different counter - I also like Brian's suggestion "$timestamp-$classname$" for the reasons he noted. Note that the hidden class name returned by `Class::getName` is `p.Foo$Lambda$$ + "/" + <suffix>`. When dumping to a file, the pathname should be `p/Foo$Lambda$$.<suffix>` matching the type descriptor (converting '/' to '.'). ------------- PR: https://git.openjdk.org/jdk/pull/12579