RFR: 8305668: PPC: Non-Top Interpreted frames should be independent of ABI_ELFv2

Richard Reingruber rrich at openjdk.org
Thu Apr 13 17:03:39 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

I think this is ready for integration now.
I think I do know the reason for the remaining issues with continuations.
The [call of `SharedRuntime::exception_handler_for_return_address`](https://github.com/openjdk/jdk/blob/92521b100f1eb785eabd101870f631f555c3b135/src/hotspot/cpu/ppc/stubGenerator_ppc.cpp#L4579) hasn't got the full abi required for calling native code. This is compensated because there is dead space in the interpreter frame's expression stack where the call parameters used to be. The space is enough on LE but not on BE where 2 more words are required it is not. Depends on the C++ compiler though if live data is killed by the call. So @backwaterred it is possible that your continuation tests succeed on AIX despite the issue. I will take care of this in a followup.

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

PR Comment: https://git.openjdk.org/jdk/pull/13372#issuecomment-1507301770


More information about the hotspot-compiler-dev mailing list