diff -r fcf2fdd96a33 -r 1e332d63bd96 src/hotspot/share/opto/library_call.cpp --- a/src/hotspot/share/opto/library_call.cpp Thu Aug 23 16:47:53 2018 -0700 +++ b/src/hotspot/share/opto/library_call.cpp Fri Aug 24 08:17:23 2018 +0200 @@ -4386,7 +4386,8 @@ if (!stopped()) { PreserveJVMState pjvms(this); CallJavaNode* slow_call = generate_method_call(vmIntrinsics::_clone, is_virtual); - Node* slow_result = set_results_for_java_call(slow_call); + // We need to deoptimize on exception (see comment above) + Node* slow_result = set_results_for_java_call(slow_call, false, /* deoptimize */ true); // this->control() comes from set_results_for_java_call result_reg->init_req(_slow_path, control()); result_val->init_req(_slow_path, slow_result);