1.1 --- a/src/share/vm/c1/c1_LIR.cpp Fri Apr 07 02:15:31 2017 +0900 1.2 +++ b/src/share/vm/c1/c1_LIR.cpp Tue Apr 11 19:17:58 2017 +0300 1.3 @@ -1516,6 +1516,17 @@ 1.4 append(c); 1.5 } 1.6 1.7 +void LIR_List::null_check(LIR_Opr opr, CodeEmitInfo* info, bool deoptimize_on_null) { 1.8 + if (deoptimize_on_null) { 1.9 + // Emit an explicit null check and deoptimize if opr is null 1.10 + CodeStub* deopt = new DeoptimizeStub(info); 1.11 + cmp(lir_cond_equal, opr, LIR_OprFact::oopConst(NULL)); 1.12 + branch(lir_cond_equal, T_OBJECT, deopt); 1.13 + } else { 1.14 + // Emit an implicit null check 1.15 + append(new LIR_Op1(lir_null_check, opr, info)); 1.16 + } 1.17 +} 1.18 1.19 void LIR_List::cas_long(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value, 1.20 LIR_Opr t1, LIR_Opr t2, LIR_Opr result) {