On Tue, 29 Oct 2024 13:12:56 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:

>> 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.
>> 
>> Unfortunately, I was unable to create a standalone CDS test for this: I 
>> somehow need to be able to put my own archived `Integer` instance into the 
>> archive, and I don't clearly see how. I tested this patch with original 
>> reproducer from [JDK-8342642](https://bugs.openjdk.org/browse/JDK-8342642) 
>> -- and it starts to pass. I don't think we would be able to convert that 
>> reproducer into a unit test, since 
>> [JDK-8342642](https://bugs.openjdk.org/browse/JDK-8342642) itself would make 
>> the reproducer ineffective.
>> 
>> Additional testing:
>>  - [x] macos-aarch64-server-fastdebug, 
>> [JDK-8342642](https://bugs.openjdk.org/browse/JDK-8342642) reproducer now 
>> passes
>>  - [x] linux-aarch64-server-fastdebug, `all`
>
> Aleksey Shipilev has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains four additional 
> commits since the last revision:
> 
>  - IllegalStateException -> InternalError
>  - Merge branch 'master' into JDK-8343019-cds-use-boxed
>  - Exception messages
>  - Fix

Marked as reviewed by vlivanov (Reviewer).

Good. I completely forgot that JLS provides guarantees for Integers in 
[-128;127] range.

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

PR Review: https://git.openjdk.org/jdk/pull/21737#pullrequestreview-2402963962
PR Comment: https://git.openjdk.org/jdk/pull/21737#issuecomment-2445217549

Reply via email to