On Tue, 16 May 2023 14:44:25 GMT, Richard Reingruber <rr...@openjdk.org> wrote:

>> Martin Doerr has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Add NONZERO check for downcall_stub_address_offset_in_bytes().
>
> src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/CallArranger.java 
> line 28:
> 
>> 26: package jdk.internal.foreign.abi.ppc64;
>> 27: 
>> 28: import java.lang.foreign.AddressLayout;
> 
> Imports are not grouped and ordered alphabetically.
> (Very much as the aarch64 version)

Done.

> src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/CallArranger.java 
> line 73:
> 
>> 71:     public static final int MAX_FLOAT_REGISTER_ARGUMENTS = 13;
>> 72: 
>> 73:     // This is derived from the 64-Bit ELF V2 ABI spec, restricted to 
>> what's
> 
> The comment says ABI V2 but the code seems to handle V1 too.

It's derived from ABI v2, but v1 is compatible. Added that to the comment.

> src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/CallArranger.java 
> line 158:
> 
>> 156:     class StorageCalculator {
>> 157:         private final boolean forArguments;
>> 158:         private boolean forVarArgs = false;
> 
> Seems to be not used.

I had kept it in case another PPC64 OS would need it, but I guess it's 
unlikely. So, I just removed it. Could get added back easily if needed.

> src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/CallArranger.java 
> line 221:
> 
>> 219:             // !useABIv2() && layout.byteSize() > 8 && 
>> layout.byteSize() % 8 != 0
>> 220: 
>> 221:             // Allocate individual fields as gp slots (regs and stack).
> 
> You explained to me, it's not individual (struct) fields that are handled 
> here. Looks like registers and 8 byte stack slots are allocated to completely 
> cover the struct. Would be good if you could change the comment and names in 
> the code to better reflect this.

Adapted to aarch64 implementation (using `MAX_COPY_SIZE`).

> src/java.base/share/classes/jdk/internal/foreign/abi/ppc64/linux/LinuxPPC64leLinker.java
>  line 41:
> 
>> 39: 
>> 40:     public static LinuxPPC64leLinker getInstance() {
>> 41:         if (instance == null) {
> 
> Other platforms optimized this to return a constant (probably after you 
> forked off the port).

Good catch. Adapted.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/12708#discussion_r1199271594
PR Review Comment: https://git.openjdk.org/jdk/pull/12708#discussion_r1199271941
PR Review Comment: https://git.openjdk.org/jdk/pull/12708#discussion_r1199272912
PR Review Comment: https://git.openjdk.org/jdk/pull/12708#discussion_r1199273422
PR Review Comment: https://git.openjdk.org/jdk/pull/12708#discussion_r1199273918

Reply via email to