> This is forked from 
> [JDK-8342642](https://bugs.openjdk.org/browse/JDK-8342642) and filed as a 
> general issue for archived boxed Integer cache when it's recreated at 
> runtime. In short, current code drops the entire primitive cache when the CDS 
> archived version of the cache is too short. This poses a problem with code 
> that uses CDS archived cache instances, since the boxed equality would break 
> when comparing the CDS-archived value and the IntegerCache value recreated at 
> runtime.
> 
> Ioi suggested a fix here: 
> https://github.com/openjdk/jdk/pull/21672#issuecomment-2434359711. I 
> separately arrived to the same idea. This PR implements it. `IntegerCache` 
> gets the special treatment, because it is the only cache that can be tuned. 
> Other caches just prevent the use of bad archived cache (which I think should 
> realistically never happen) without re-creating it.
> 
> I tested this patch with original reproducer from 
> [JDK-8342642](https://bugs.openjdk.org/browse/JDK-8342642) -- and it starts 
> to pass.
> 
> Additional testing:
>  - [x] macos-aarch64-server-fastdebug, 
> [JDK-8342642](https://bugs.openjdk.org/browse/JDK-8342642) reproducer now 
> passes
>  - [x] macos-aarch64-server-fastdebug, new regression test fails without the 
> fix, passes with it
>  - [x] linux-aarch64-server-fastdebug, `all`

Aleksey Shipilev has updated the pull request incrementally with one additional 
commit since the last revision:

  archivedIdx -> archivedSize

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/21737/files
  - new: https://git.openjdk.org/jdk/pull/21737/files/9283b137..69ec2ce5

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=21737&range=04
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21737&range=03-04

  Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/21737.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21737/head:pull/21737

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

Reply via email to