RFR: 8302158: PPC: test/jdk/jdk/internal/vm/Continuation/Fuzz.java: AssertionError: res: false shouldPin: false

Goetz Lindenmaier goetz at openjdk.org
Wed Feb 15 12:38:41 UTC 2023


On Tue, 14 Feb 2023 14:10:08 GMT, Richard Reingruber <rrich at openjdk.org> wrote:

> This fixes the linked issue by trimming the caller of a frame to be deoptimized back to its `unextended_sp` iff it is compiled. The creation of the section `dead after deoptimization` shown in the attachment [yield_after_deopt_failure.log](https://bugs.openjdk.org/secure/attachment/102602/yield_after_deopt_failure.log) is prevented by this.
> 
> A new mode is added to the test BasicExt.java where all frames are deoptimized after a yield operation. The issue can be deterministically reproduced with the new mode. It's not worth to execute all test cases with the new mode though. Instead `ContinuationCompiledFramesWithStackArgs_3c4` is always executed a 2nd time in this mode.
> 
> Before this BasicExt.java was refactored for better argument processing and representation of the test modes.
> Also the try-catch-clause in the main method had to be changed to rethrow the caught exception because without this the test would have succeeded.
> 
> Testing: jtreg tests tier 1-4 on standard platforms and also on ppc64le.

LGTM

src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp line 3094:

> 3092: 
> 3093:   // Freezing continuation frames requires that the caller is trimmed to unextended sp if compiled.
> 3094:   Register caller_sp = R23_tmp3;

Can the caller be interpreted? I.e., not compiled?
Then it might be helpful to comment like
// If not compiled this contains sp() resulting in a resize of 0.

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

Marked as reviewed by goetz (Reviewer).

PR: https://git.openjdk.org/jdk/pull/12557


More information about the core-libs-dev mailing list