[12] RFR(S): 8209833: C2 compilation fails with "assert(ex_map->jvms()->same_calls_as(_exceptions->jvms())) failed: all collected exceptions must come from the same place"

Tobias Hartmann tobias.hartmann at oracle.com
Wed Aug 22 09:50:33 UTC 2018


Hi,

please review the following patch:
https://bugs.openjdk.java.net/browse/JDK-8209833
http://cr.openjdk.java.net/~thartmann/8209833/webrev.00/

I found this while working on the clone intrinsic for value types. The problem is that
LibraryCallKit::inline_native_clone() sets the reexecute bit [1] and with bimorphic inlining it can
happen that the exception state of the fast path has reexecute == true and the slow path has
reexecute = false. We then fail when merging the exception states.

The same issue was fixed by JDK-8033626 [2] but the fix was not complete because the slow call also
creates an exception state. We should deoptimize if the slow call throws an exception.

Thanks,
Tobias

[1] http://hg.openjdk.java.net/jdk/jdk/file/2d7bff7367c6/src/hotspot/share/opto/library_call.cpp#l4240
[2] https://bugs.openjdk.java.net/browse/JDK-8033626


More information about the hotspot-compiler-dev mailing list