equal
deleted
inserted
replaced
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. |