1.1 --- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Tue Dec 13 10:07:12 2016 -0800 1.2 +++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Tue Dec 13 14:37:04 2016 -0500 1.3 @@ -1228,12 +1228,17 @@ 1.4 obj.load_item(); 1.5 1.6 // info for exceptions 1.7 - CodeEmitInfo* info_for_exception = state_for(x); 1.8 + CodeEmitInfo* info_for_exception = 1.9 + (x->needs_exception_state() ? state_for(x) : 1.10 + state_for(x, x->state_before(), true /*ignore_xhandler*/)); 1.11 1.12 CodeStub* stub; 1.13 if (x->is_incompatible_class_change_check()) { 1.14 assert(patching_info == NULL, "can't patch this"); 1.15 stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception); 1.16 + } else if (x->is_invokespecial_receiver_check()) { 1.17 + assert(patching_info == NULL, "can't patch this"); 1.18 + stub = new DeoptimizeStub(info_for_exception); 1.19 } else { 1.20 stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception); 1.21 }