[9] RFR(S): 8162540: Crash in C2 escape analysis with assert: "node should be registered"

Tobias Hartmann tobias.hartmann at oracle.com
Wed Jul 27 14:03:44 UTC 2016


please review the following patch:

We hit an assert in escape analysis because a field in the connection graph is not marked as "oop" although it points to an oop field:
Field NoEscape(NoEscape) +24 ( 5610 )[ [ ]] 5370 AddP === _ 5610 5610 1498 [[ 5060 6247 ]] Oop:java/lang/Object+24 * [narrow] !jvms: LogManager::initializeGlobalHandlers @ bci:-1 LogManager::access$1800 @ bci:1 LogManager$RootLogger::accessCheckedHandlers @ bci:4 Logger::getHandlers @ bci:1 LogManager::closeHandlers @ bci:1 LogManager::resetLogger @ bci:2 LogManager::resetLoggerContext @ bci:39 

The AddP is used as input to a CompareAndSwapN intrinsic (see comments in the bug). ConnectionGraph::is_oop_field() misses the special cases for GetAndSet, CompareAndExchange and CompareAndSwap intrinsics emitting unsafe accesses to oop fields. 

Tested with failing tests, JPRT and RBT (running).


More information about the hotspot-compiler-dev mailing list