RFR: 8347426: Invalid value used for enum Cell in iTypeFlow::StateVector::meet_exception [v2]
Dean Long
dlong at openjdk.org
Thu Feb 27 11:19:02 UTC 2025
On Thu, 27 Feb 2025 08:28:57 GMT, Marc Chevalier <duke at openjdk.org> wrote:
>> As guess on the JBS ticket, we have a UB when `_outer->max_locals() == 0`, because then we try to do `(Cell)(-1)` which is out of range since Cell's range is [0, `INT_MAX`].
>>
>> The obvious fix that is
>>
>> Cell limit = local(_outer->max_locals());
>> for (Cell c = start_cell(); c < limit; c = next_cell(c)) {
>>
>> since `local` asserts its argument to be in [0, `outer->max_locals()`). Of course
>>
>> Cell limit = (Cell)(_outer->max_locals());
>>
>> would work, but it seems to break (the very light) abstraction.
>>
>> I've also added an assert to transform the UB into a clear failure.
>>
>> This fix makes the UB warning go away on Mac with arm64.
>>
>> Thanks,
>> Marc
>
> Marc Chevalier has updated the pull request incrementally with one additional commit since the last revision:
>
> Introduce local_limit_cell
Marked as reviewed by dlong (Reviewer).
-------------
PR Review: https://git.openjdk.org/jdk/pull/23772#pullrequestreview-2647442246
More information about the hotspot-compiler-dev
mailing list