On Tue, 2 Dec 2025 10:30:46 GMT, Quan Anh Mai <[email protected]> wrote:
> Hi, > > This PR fixes the issue of the compiler crashing with "not enough operands > for reexecution". The issue here is that during > `Parse::catch_inline_exceptions`, the old stack is gone, and we cannot > reexecute the current bytecode anymore. However, there are some places where > we try to insert safepoints into the graph, such as if the handler is a > backward jump, or if one of the exceptions in the handlers is not loaded. > Since the `_reexecute` state of the current jvms is "undefined", it is > inferred automatically that it should reexecute for some bytecodes such as > `putfield`. The solution then is to explicitly set `_reexecute` to false. > > I can manage to write a unit test for the case of a backward handler, for the > other cases, since the exceptions that can be thrown for a bytecode that is > inferred to reexecute are `NullPointerException`, > `ArrayIndexOutOfBoundsException`, and `ArrayStoreException`. I find it hard > to construct such a test in which one of them is not loaded. > > Please kindly review, thanks a lot. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jdk/pull/28597
