On Tue, 28 Jan 2025 16:11:53 GMT, Shaojin Wen <s...@openjdk.org> wrote:

> ZoneOffset.MINUTES_15_CACHE uses AtomicReferenceArray to replace 
> ConcurrentMap to avoid object allocation caused by boxing from int to Integer 
> during access.

src/java.base/share/classes/java/time/ZoneOffset.java line 139:

> 137: 
> 138:     /** Cache of time-zone offset by offset in seconds. */
> 139:     private static final int MINUTES_15_SECONDS = 15 * 
> SECONDS_PER_MINUTE;

I think a name like `SECONDS_PER_15_MINUTES` or `SECONDS_PER_QUARTER` might be 
better.

src/java.base/share/classes/java/time/ZoneOffset.java line 429:

> 427:             throw new DateTimeException("Zone offset not in valid range: 
> -18:00 to +18:00");
> 428:         }
> 429:         int minutes15Rem = totalSeconds / MINUTES_15_SECONDS;

I suggest renaming `minutes15Rem` to `quarters`. "Rem" is wrong, as this result 
is a quotient instead of a remainder.

src/java.base/share/classes/java/time/ZoneOffset.java line 435:

> 433:             if (result == null) {
> 434:                 result = new ZoneOffset(totalSeconds);
> 435:                 var existing = MINUTES_15_CACHE.getAndSet(cacheIndex, 
> result);

Suggestion:

                var existing = MINUTES_15_CACHE.compareAndExchange(cacheIndex, 
null, result);

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

PR Review Comment: https://git.openjdk.org/jdk/pull/23337#discussion_r1932485129
PR Review Comment: https://git.openjdk.org/jdk/pull/23337#discussion_r1932489786
PR Review Comment: https://git.openjdk.org/jdk/pull/23337#discussion_r1932482577

Reply via email to