RFR: 8356126: Duplication handling and optimization of CaptureCallState [v7]
Chen Liang
liach at openjdk.org
Tue May 6 17:43:14 UTC 2025
On Tue, 6 May 2025 17:27:09 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> Chen Liang has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Update src/java.base/share/classes/jdk/internal/foreign/abi/CapturableState.java
>>
>> Co-authored-by: Shaojin Wen <shaojin.wensj at alibaba-inc.com>
>
> src/java.base/share/classes/jdk/internal/foreign/abi/CapturableState.java line 55:
>
>> 53: } else {
>> 54: supported = List.of(new CapturableState("errno", JAVA_INT, 1 << 2));
>> 55: }
>
> Maybe just split the initialization of `LAYOUT` and `LOOKUP` across these 2 branches, instead of collecting everything into intermediate arrays. i.e.
>
> Suggestion:
>
> if (OperatingSystem.isWindows()) {
> LAYOUT = MemoryLayout.structLayout(
> JAVA_INT, // GetLastError
> JAVA_INT, // WSAGetLastError
> JAVA_INT // errno
> );
> LOOKUP = Map.of(
> "GetLastError", 1 << 0,
> "WSAGetLastError", 1 << 1,
> "errno", 1 << 2
> );
> } else {
> LAYOUT = MemoryLayout.structLayout(
> JAVA_INT // errno
> );
> LOOKUP = Map.of(
> "errno", 1 << 2
> );
> }
Then we can just make `CapturableState` a utility class. Should we proceed in this direction?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25025#discussion_r2075969405
More information about the core-libs-dev
mailing list