src/share/vm/c1/c1_LIR.cpp

changeset 8735
dcaab7b518c4
parent 7854
e8260b6328fb
child 8856
ac27a9c85bea
child 9775
9b865b281711
     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) {

mercurial