Summary: Do not install async exceptions at_safepoint for each bytecode.

See CR for a lot more details.  This change calls a new InterpreterRuntime::at_safepoint_async_safe() which installs the async exception in the interpreter at backward branches and returns.  This uses safepoint polling code in the interpreter for each platform.  These changes (cross) compile on platforms that Oracle doesn't support but I don't know if they work.

I'm not convinced the platform specific changes are necessary, because calls to the runtime from many bytecodes will install the async exception, so it's essentially installed "enough" for this deprecated feature.  I tested the changes with *and* without the platform specific changes with no failure, which included the jdb, jdi and jvmti serviceability tests.

This change also makes InterpreterRuntime::monitorexit a JRT_LEAF bytecode. The code to check for exceptions is outside the runtime call.  I ran the JCK vm and lang tests on this change with no failure.

Tested with tier1-6.

open webrev at http://cr.openjdk.java.net/~coleenp/2020/8074292.01/webrev
bug link https://bugs.openjdk.java.net/browse/JDK-8074292

Thanks,
Coleen

Reply via email to