comparison src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp @ 8227:0b85ccd62409

8168699: Validate special case invocations Reviewed-by: kevinw, vlivanov
author coleenp
date Tue, 13 Dec 2016 14:37:04 -0500
parents 32b682649973
children bb44c0e88235
comparison
equal deleted inserted replaced
38:58e79161e658 39:ebcda21512e7
1021 patching_info = state_for(x, x->state_before()); 1021 patching_info = state_for(x, x->state_before());
1022 } 1022 }
1023 obj.load_item(); 1023 obj.load_item();
1024 LIR_Opr out_reg = rlock_result(x); 1024 LIR_Opr out_reg = rlock_result(x);
1025 CodeStub* stub; 1025 CodeStub* stub;
1026 CodeEmitInfo* info_for_exception = state_for(x); 1026 CodeEmitInfo* info_for_exception =
1027 (x->needs_exception_state() ? state_for(x) :
1028 state_for(x, x->state_before(), true /*ignore_xhandler*/));
1027 1029
1028 if (x->is_incompatible_class_change_check()) { 1030 if (x->is_incompatible_class_change_check()) {
1029 assert(patching_info == NULL, "can't patch this"); 1031 assert(patching_info == NULL, "can't patch this");
1030 stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception); 1032 stub = new SimpleExceptionStub(Runtime1::throw_incompatible_class_change_error_id, LIR_OprFact::illegalOpr, info_for_exception);
1033 } else if (x->is_invokespecial_receiver_check()) {
1034 assert(patching_info == NULL, "can't patch this");
1035 stub = new DeoptimizeStub(info_for_exception);
1031 } else { 1036 } else {
1032 stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception); 1037 stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception);
1033 } 1038 }
1034 LIR_Opr tmp1 = FrameMap::G1_oop_opr; 1039 LIR_Opr tmp1 = FrameMap::G1_oop_opr;
1035 LIR_Opr tmp2 = FrameMap::G3_oop_opr; 1040 LIR_Opr tmp2 = FrameMap::G3_oop_opr;