RFR (S) 8074292: nsk/jdb/kill/kill001: generateOopMap.cpp assert(bb->is_reachable()) failed

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Mon Apr 13 14:34:01 UTC 2020


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



More information about the serviceability-dev mailing list