RFR: 8292584: assert(cb != __null) failed: must be with -XX:-Inline

Vladimir Kozlov kvn at openjdk.org
Tue Aug 23 19:25:31 UTC 2022


On Tue, 23 Aug 2022 19:07:08 GMT, Dean Long <dlong at openjdk.org> wrote:

> This intrinsic is new with Loom. Stack walking can deal with stack adjustments, but only if there is an interpreter frame to do the fixup. The problem here is that generate_Continuation_doYield_entry() code is registered as an interpreter entry point, but it does not create an interpreter frame to fixup adapter adjustments. Normally everything is fine because the interpreter entry point is only called by interpreted code, so there is no adjustment. But with C1 and inlining turned off, the intrinsic does not get inlined, so we end up going through a c2i adapter.

Thank you for explanation.

> 
> Fixing JDK-8292694 would hide the problem. Another option would be to create a real interpreter frame. I also listed a few other options in the JBS issue:

Is it hard to create a real interpreter frame? We should avoid "special case" which may cause more issues later.

> 
> * force C1 to always inline this intrinsic.

No. Disabling inlining is legal.

> * print a warning and refuse to enable Continuations if the doYield intrinsic is disabled

No.

> * make doYield a special native intrinsic like enterSpecial, bypassing inlining checks

Is it easier to implement vs real interpreter frame?

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

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


More information about the hotspot-compiler-dev mailing list