On Thu, 16 Feb 2023 14:06:54 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 updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Use `Instant.now()` for more precise timestamps.
>   
>   Using `currentTimeMillis` is imprecise enough that tests may sporadically 
> fail if two lambda classes from the same lambda class are dumped within 1ms 
> of one another. `Instant.now()` is much more precise and also sorts nicely.

I can't say for certain (since I don't have a Windows environment I can test 
on) but I believe that the timestamp resolution on Windows may be too low for 
the timestamp approach to work (at least by itself).

I guess next I'll try out the approach similar to the one suggested by @iklam. 
Though maybe instead of a `Map` I'll use a `ClassValue` to retain an 
`AtomicInteger` instance for the per-class counter.

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

PR: https://git.openjdk.org/jdk/pull/12579

Reply via email to