RFR: 8305668: PPC: Non-Top Interpreted frames should be independent of ABI_ELFv2
Tyler Steele
tsteele at openjdk.org
Thu Apr 13 16:46:43 UTC 2023
On Thu, 6 Apr 2023 13:22:49 GMT, Richard Reingruber <rrich at openjdk.org> wrote:
> This PR makes parent interpreted Java frames independent of `ABI_ELFv2`.
> With the changes `test/jdk/jdk/internal/vm/Continuation/BasicExt.java#COMP_ALL` succeeds on PPC64 Big Endian Linux.
>
> Before:
>
> * `parent_ijava_frame_abi` was derived from `abi_minframe` which depends on `ABI_ELFv2`
> * jit_abi is independent of `abi_minframe`
> * `frame::metadata_words` is wrong for `parent_ijava_frame_abi` if `ABI_ELFv2` is not defined (big endian)
>
> After changes:
>
> * prefixed structs that depend on `ABI_ELFv2` with `native_`
> * introduced `java_abi` which is independent of `ABI_ELFv2`
> * `frame::metadata_words` is the size in words of `java_abi`
>
> This is still a little imprecise since `top_ijava_frame_abi` is larger than `java_abi` but the top frame is never frozen as it is always `vmIntrinsics::_Continuation_doYield`
>
> Testing:
>
> PPC64le: most JCK and JTREG tiers 1-4, also in Xcomp mode.
> PPC64be Linux: hotspot tier1 tests
Interesting. I see no such failure on AIX either on my VThread branch, or when checking this PR out directly. I am currently running on Linux/Power to see if I can confirm that I see the failure there.
I don't see any failures in BasicExt.java on my aix/vthread branch with these and other changes (most notably the PollsetPoller implementation).
For reference, I created #13452. It collects some in-progress changes from me, changes from this PR, and some changes from Matthias that enable the Harfbuzz library to build.
> [VMContinuations are disabled on AIX](https://github.com/openjdk/jdk/blob/bc15163386659bfd549576817b4efe7307261ea8/src/hotspot/cpu/ppc/globals_ppc.hpp#L59). Have you changed that line?
BasicExt.java is otherwise skipped because [it requires continuations](https://github.com/openjdk/jdk/blob/bc15163386659bfd549576817b4efe7307261ea8/test/jdk/jdk/internal/vm/Continuation/BasicExt.java#L28).
If you run it standalone (w/o jtreg) you should get an UnsupportedOperationException
With the changes mentioned above, I believe I am running your VThreads implementation on AIX: VMContinuations is indeed set to true, and BasicExt should be running the 'real' vthread impl. The issues I see appear to hang while waiting for my PollsetPoller implementation, so I don't believe anything [in this PR] is an issue for me.
> I'm planning to disable VMContinuations on PPC big endian platforms for now. This will help testing changes like this pr.
Sounds good. I'll make sure to test my changes on AIX & Linux BE before merging. Thanks again for catching this issue. I was definitely looking in the wrong place for it's cause.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/13372#issuecomment-1505624569
PR Comment: https://git.openjdk.org/jdk/pull/13372#issuecomment-1506127285
More information about the hotspot-compiler-dev
mailing list