1194 patching_info = state_for(x, x->state_before()); |
1194 patching_info = state_for(x, x->state_before()); |
1195 } |
1195 } |
1196 obj.load_item(); |
1196 obj.load_item(); |
1197 LIR_Opr out_reg = rlock_result(x); |
1197 LIR_Opr out_reg = rlock_result(x); |
1198 CodeStub* stub; |
1198 CodeStub* stub; |
1199 CodeEmitInfo* info_for_exception = state_for(x); |
1199 CodeEmitInfo* info_for_exception = |
|
1200 (x->needs_exception_state() ? state_for(x) : |
|
1201 state_for(x, x->state_before(), true /*ignore_xhandler*/)); |
1200 |
1202 |
1201 if (x->is_incompatible_class_change_check()) { |
1203 if (x->is_incompatible_class_change_check()) { |
1202 assert(patching_info == NULL, "can't patch this"); |
1204 assert(patching_info == NULL, "can't patch this"); |
1203 stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception); |
1205 stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception); |
|
1206 } else if (x->is_invokespecial_receiver_check()) { |
|
1207 assert(patching_info == NULL, "can't patch this"); |
|
1208 stub = new DeoptimizeStub(info_for_exception, |
|
1209 Deoptimization::Reason_class_check, |
|
1210 Deoptimization::Action_none); |
1204 } else { |
1211 } else { |
1205 stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception); |
1212 stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception); |
1206 } |
1213 } |
1207 LIR_Opr tmp1 = FrameMap::G1_oop_opr; |
1214 LIR_Opr tmp1 = FrameMap::G1_oop_opr; |
1208 LIR_Opr tmp2 = FrameMap::G3_oop_opr; |
1215 LIR_Opr tmp2 = FrameMap::G3_oop_opr; |