src/hotspot/share/opto/ifnode.cpp
changeset 48595 5d699d81c10c
parent 48145 f913f6dba2d3
child 48606 be259687afab
equal deleted inserted replaced
48594:4e4929530412 48595:5d699d81c10c
     1 /*
     1 /*
     2  * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   503 
   503 
   504   // We have recognized one of these forms:
   504   // We have recognized one of these forms:
   505   //  Flip 1:  If (Bool[<] CmpU(l, LoadRange)) ...
   505   //  Flip 1:  If (Bool[<] CmpU(l, LoadRange)) ...
   506   //  Flip 2:  If (Bool[<=] CmpU(LoadRange, l)) ...
   506   //  Flip 2:  If (Bool[<=] CmpU(LoadRange, l)) ...
   507 
   507 
   508   ProjNode* iftrap = proj_out(flip_test == 2 ? true : false);
   508   ProjNode* iftrap = proj_out_or_null(flip_test == 2 ? true : false);
   509   return iftrap;
   509   return iftrap;
   510 }
   510 }
   511 
   511 
   512 
   512 
   513 //------------------------------is_range_check---------------------------------
   513 //------------------------------is_range_check---------------------------------
  1469 
  1469 
  1470   // Loop predicates may have depending checks which should not
  1470   // Loop predicates may have depending checks which should not
  1471   // be skipped. For example, range check predicate has two checks
  1471   // be skipped. For example, range check predicate has two checks
  1472   // for lower and upper bounds.
  1472   // for lower and upper bounds.
  1473   ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj();
  1473   ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj();
  1474   if ((unc_proj != NULL) && (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL)) {
  1474   if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL) {
  1475     prev_dom = idom;
  1475     prev_dom = idom;
  1476   }
  1476   }
  1477 
  1477 
  1478   // Now walk the current IfNode's projections.
  1478   // Now walk the current IfNode's projections.
  1479   // Loop ends when 'this' has no more uses.
  1479   // Loop ends when 'this' has no more uses.