hotspot/src/cpu/s390/vm/c1_LIRGenerator_s390.cpp
changeset 44738 11431bbc9549
parent 42897 57e7b1c75d17
child 46458 3c12af929e7d
equal deleted inserted replaced
44737:d090627aedb8 44738:11431bbc9549
   991     patching_info = state_for (x, x->state_before());
   991     patching_info = state_for (x, x->state_before());
   992   }
   992   }
   993   obj.load_item();
   993   obj.load_item();
   994 
   994 
   995   // info for exceptions
   995   // info for exceptions
   996   CodeEmitInfo* info_for_exception = state_for (x);
   996   CodeEmitInfo* info_for_exception =
       
   997       (x->needs_exception_state() ? state_for(x) :
       
   998                                     state_for(x, x->state_before(), true /*ignore_xhandler*/));
   997 
   999 
   998   CodeStub* stub;
  1000   CodeStub* stub;
   999   if (x->is_incompatible_class_change_check()) {
  1001   if (x->is_incompatible_class_change_check()) {
  1000     assert(patching_info == NULL, "can't patch this");
  1002     assert(patching_info == NULL, "can't patch this");
  1001     stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception);
  1003     stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception);
       
  1004   } else if (x->is_invokespecial_receiver_check()) {
       
  1005     assert(patching_info == NULL, "can't patch this");
       
  1006     stub = new DeoptimizeStub(info_for_exception,
       
  1007                               Deoptimization::Reason_class_check,
       
  1008                               Deoptimization::Action_none);
  1002   } else {
  1009   } else {
  1003     stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception);
  1010     stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception);
  1004   }
  1011   }
  1005   LIR_Opr reg = rlock_result(x);
  1012   LIR_Opr reg = rlock_result(x);
  1006   LIR_Opr tmp1 = new_register(objectType);
  1013   LIR_Opr tmp1 = new_register(objectType);