On Thu, 18 Jun 2026 11:41:41 GMT, Christian Hagedorn <[email protected]> 
wrote:

> The scaled index computation for `elem_size > 8` in `adjust_for_flat_array()` 
> could overflow if we used a sufficiently large array. However, we currently 
> cannot create such a huge array because of running out memory first:
> 
> With `factor = 2`, we have `elem_size = 16`. To get the `MulI` to overflow, 
> we need an array length larger than `max_jint / 2`. Thus, we require a 
> payload larger than
> 
> elem_size * length = 16 * (max_jint / 2) = max_jint * 8
> 
> But the max flat array size is restricted by `FlatArrayKlass::max_elements()` 
> to not exceed `max_jint * 8` bytes. So, we are always getting an OOM before 
> actually observing an overflow.
> 
> Nevertheless, I think we should still add a safety check in 
> `adjust_for_flat_array()` if this upper limit ever changes in the future. I 
> suggest to use a `guarantee()` here to also cover product builds. 
> Alternatively, we could also use an `assert` + compilation bailout. But given 
> that we cannot currently observe this failure, I suggest to go with a 
> `guarantee()`.
> 
> Since we do not know the exact array length, I propose to calculate the 
> maximum possible array size and compare it to the maximum scaled index. If we 
> ever change `FlatArrayKlass::max_elements()` to allow bigger arrays, we would 
> catch that with the added `guarantee()`.
> 
> Thanks,
> Christian
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Looks good to me.

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

Marked as reviewed by qamai (Committer).

PR Review: 
https://git.openjdk.org/valhalla/pull/2566#pullrequestreview-4524793425

Reply via email to