src/cpu/x86/vm/c1_LIRGenerator_x86.cpp

changeset 8739
0b85ccd62409
parent 8415
d109bda16490
child 8856
ac27a9c85bea
child 9614
bb44c0e88235
equal deleted inserted replaced
8738:5ee58c7d3938 8739:0b85ccd62409
1226 patching_info = state_for(x, x->state_before()); 1226 patching_info = state_for(x, x->state_before());
1227 } 1227 }
1228 obj.load_item(); 1228 obj.load_item();
1229 1229
1230 // info for exceptions 1230 // info for exceptions
1231 CodeEmitInfo* info_for_exception = state_for(x); 1231 CodeEmitInfo* info_for_exception =
1232 (x->needs_exception_state() ? state_for(x) :
1233 state_for(x, x->state_before(), true /*ignore_xhandler*/));
1232 1234
1233 CodeStub* stub; 1235 CodeStub* stub;
1234 if (x->is_incompatible_class_change_check()) { 1236 if (x->is_incompatible_class_change_check()) {
1235 assert(patching_info == NULL, "can't patch this"); 1237 assert(patching_info == NULL, "can't patch this");
1236 stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception); 1238 stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception);
1239 } else if (x->is_invokespecial_receiver_check()) {
1240 assert(patching_info == NULL, "can't patch this");
1241 stub = new DeoptimizeStub(info_for_exception);
1237 } else { 1242 } else {
1238 stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception); 1243 stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception);
1239 } 1244 }
1240 LIR_Opr reg = rlock_result(x); 1245 LIR_Opr reg = rlock_result(x);
1241 LIR_Opr tmp3 = LIR_OprFact::illegalOpr; 1246 LIR_Opr tmp3 = LIR_OprFact::illegalOpr;

mercurial