RFR: 8344168: Change Unsafe base offset from int to long
Jorn Vernee
jvernee at openjdk.org
Thu Nov 14 17:55:00 UTC 2024
On Thu, 14 Nov 2024 05:32:34 GMT, Shaojin Wen <swen at openjdk.org> wrote:
> The type of the Unsafe base offset constant is int, which may cause overflow when adding int offsets, such as 8343925 (PR #22012). 8343984 (PR #22027) fixes most of the offset overflows in JDK, but ArraysSupport and CRC32C are still unfixed.
>
> @liach proposed the idea of changing the Unsafe base offset to long, which is a complete solution to the Unsafe offset overflow. After discussing with @liach, I submitted this PR to implement @liach's idea.
src/java.base/share/classes/jdk/internal/foreign/Utils.java line 316:
> 314: new BaseAndScale((int) Unsafe.ARRAY_LONG_BASE_OFFSET, Unsafe.ARRAY_LONG_INDEX_SCALE);
> 315: public static final BaseAndScale DOUBLE =
> 316: new BaseAndScale((int) Unsafe.ARRAY_DOUBLE_BASE_OFFSET, Unsafe.ARRAY_DOUBLE_INDEX_SCALE);
I'd rather the `base` field be change to `long` instead of introducing cast here. Otherwise users of this class will have the same issue.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22095#discussion_r1842658935
More information about the core-libs-dev
mailing list