hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
changeset 44738 11431bbc9549
parent 41337 4493ad6de04d
child 46630 75aa3e39d02c
child 45632 e56cfcaea55c
equal deleted inserted replaced
44737:d090627aedb8 44738:11431bbc9549
  1427     patching_info = state_for(x, x->state_before());
  1427     patching_info = state_for(x, x->state_before());
  1428   }
  1428   }
  1429   obj.load_item();
  1429   obj.load_item();
  1430 
  1430 
  1431   // info for exceptions
  1431   // info for exceptions
  1432   CodeEmitInfo* info_for_exception = state_for(x);
  1432   CodeEmitInfo* info_for_exception =
       
  1433       (x->needs_exception_state() ? state_for(x) :
       
  1434                                     state_for(x, x->state_before(), true /*ignore_xhandler*/));
  1433 
  1435 
  1434   CodeStub* stub;
  1436   CodeStub* stub;
  1435   if (x->is_incompatible_class_change_check()) {
  1437   if (x->is_incompatible_class_change_check()) {
  1436     assert(patching_info == NULL, "can't patch this");
  1438     assert(patching_info == NULL, "can't patch this");
  1437     stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception);
  1439     stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception);
       
  1440   } else if (x->is_invokespecial_receiver_check()) {
       
  1441     assert(patching_info == NULL, "can't patch this");
       
  1442     stub = new DeoptimizeStub(info_for_exception, Deoptimization::Reason_class_check, Deoptimization::Action_none);
  1438   } else {
  1443   } else {
  1439     stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception);
  1444     stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception);
  1440   }
  1445   }
  1441   LIR_Opr reg = rlock_result(x);
  1446   LIR_Opr reg = rlock_result(x);
  1442   LIR_Opr tmp3 = LIR_OprFact::illegalOpr;
  1447   LIR_Opr tmp3 = LIR_OprFact::illegalOpr;