src/hotspot/share/opto/phaseX.cpp
changeset 48595 5d699d81c10c
parent 47765 b7c7428eaab9
child 49487 bde392011cd8
equal deleted inserted replaced
48594:4e4929530412 48595:5d699d81c10c
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 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.
  1522     // If we changed the receiver type to a call, we need to revisit
  1522     // If we changed the receiver type to a call, we need to revisit
  1523     // the Catch following the call.  It's looking for a non-NULL
  1523     // the Catch following the call.  It's looking for a non-NULL
  1524     // receiver to know when to enable the regular fall-through path
  1524     // receiver to know when to enable the regular fall-through path
  1525     // in addition to the NullPtrException path.
  1525     // in addition to the NullPtrException path.
  1526     if (use->is_CallDynamicJava() && n == use->in(TypeFunc::Parms)) {
  1526     if (use->is_CallDynamicJava() && n == use->in(TypeFunc::Parms)) {
  1527       Node* p = use->as_CallDynamicJava()->proj_out(TypeFunc::Control);
  1527       Node* p = use->as_CallDynamicJava()->proj_out_or_null(TypeFunc::Control);
  1528       if (p != NULL) {
  1528       if (p != NULL) {
  1529         add_users_to_worklist0(p);
  1529         add_users_to_worklist0(p);
  1530       }
  1530       }
  1531     }
  1531     }
  1532 
  1532 
  1615     }
  1615     }
  1616     // If changed initialization activity, check dependent Stores
  1616     // If changed initialization activity, check dependent Stores
  1617     if (use_op == Op_Allocate || use_op == Op_AllocateArray) {
  1617     if (use_op == Op_Allocate || use_op == Op_AllocateArray) {
  1618       InitializeNode* init = use->as_Allocate()->initialization();
  1618       InitializeNode* init = use->as_Allocate()->initialization();
  1619       if (init != NULL) {
  1619       if (init != NULL) {
  1620         Node* imem = init->proj_out(TypeFunc::Memory);
  1620         Node* imem = init->proj_out_or_null(TypeFunc::Memory);
  1621         if (imem != NULL)  add_users_to_worklist0(imem);
  1621         if (imem != NULL)  add_users_to_worklist0(imem);
  1622       }
  1622       }
  1623     }
  1623     }
  1624     if (use_op == Op_Initialize) {
  1624     if (use_op == Op_Initialize) {
  1625       Node* imem = use->as_Initialize()->proj_out(TypeFunc::Memory);
  1625       Node* imem = use->as_Initialize()->proj_out_or_null(TypeFunc::Memory);
  1626       if (imem != NULL)  add_users_to_worklist0(imem);
  1626       if (imem != NULL)  add_users_to_worklist0(imem);
  1627     }
  1627     }
  1628     // Loading the java mirror from a klass oop requires two loads and the type
  1628     // Loading the java mirror from a klass oop requires two loads and the type
  1629     // of the mirror load depends on the type of 'n'. See LoadNode::Value().
  1629     // of the mirror load depends on the type of 'n'. See LoadNode::Value().
  1630     if (use_op == Op_LoadP && use->bottom_type()->isa_rawptr()) {
  1630     if (use_op == Op_LoadP && use->bottom_type()->isa_rawptr()) {