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