comparison src/hotspot/cpu/s390/c1_LIRGenerator_s390.cpp @ 50458:c63bdf53a1a7

8202399: [C1] LIRGenerator::do_CheckCast needs to exclude is_invokespecial_receiver_check() when using PatchAlot Reviewed-by: kvn Contributed-by: Vladimir Ivanov <vladimir.x.ivanov@oracle.com>
author dholmes
date Mon, 30 Apr 2018 20:29:19 -0400
parents 4bb58f644e4e
children 9010b580d8a9
comparison
equal deleted inserted replaced
3:3bab42a5f837 4:094611950cb8
873 873
874 void LIRGenerator::do_CheckCast(CheckCast* x) { 874 void LIRGenerator::do_CheckCast(CheckCast* x) {
875 LIRItem obj(x->obj(), this); 875 LIRItem obj(x->obj(), this);
876 876
877 CodeEmitInfo* patching_info = NULL; 877 CodeEmitInfo* patching_info = NULL;
878 if (!x->klass()->is_loaded() || (PatchALot && !x->is_incompatible_class_change_check())) { 878 if (!x->klass()->is_loaded() || (PatchALot && !x->is_incompatible_class_change_check() && !x->is_invokespecial_receiver_check())) {
879 // Must do this before locking the destination register as an oop register, 879 // Must do this before locking the destination register as an oop register,
880 // and before the obj is loaded (the latter is for deoptimization). 880 // and before the obj is loaded (the latter is for deoptimization).
881 patching_info = state_for (x, x->state_before()); 881 patching_info = state_for (x, x->state_before());
882 } 882 }
883 obj.load_item(); 883 obj.load_item();