equal
deleted
inserted
replaced
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()) { |