On Tue, 27 Aug 2024 14:45:37 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> 
wrote:

>> When working on startup improvements, I noticed that the method handle 
>> returned by `MemoryLayout::offsetHandle` can overflow if the client calls 
>> the handle with a base offset that is too big.
>> 
>> In other similar situations, the layout API always fails with 
>> `ArithmeticException` (see `MemoryLayout::scale`), so we should do the same 
>> here.
>> 
>> The fix is to use a `Math::addExact(long, long)` for the outermost add 
>> operation in the computation of the offset method handle. That outermost 
>> computation in fact is the only one that can overflow: it is an addition 
>> between a user-provided base offset `B` and a layout offset `L`. `L` is 
>> guaranteed not to overflow, by construction (as `L` is derived from a layout 
>> path). But `B` + `L` might overflow, so the new logic checks for that.
>
> Maurizio Cimadamore has updated the pull request with a new target base due 
> to a merge or a rebase. The pull request now contains three commits:
> 
>  - Merge branch 'master' into offset_overflow
>  - Merge branch 'master' into offset_overflow
>  - Initial push

Merge ok ;-)

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

Marked as reviewed by pminborg (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/20662#pullrequestreview-2265544939

Reply via email to