1794 bool has_decodeN = false; |
1794 bool has_decodeN = false; |
1795 Node* in_decodeN = NULL; |
1795 Node* in_decodeN = NULL; |
1796 for (uint i=1; i<req(); ++i) {// For all paths in |
1796 for (uint i=1; i<req(); ++i) {// For all paths in |
1797 Node *ii = in(i); |
1797 Node *ii = in(i); |
1798 if (ii->is_DecodeN() && ii->bottom_type() == bottom_type()) { |
1798 if (ii->is_DecodeN() && ii->bottom_type() == bottom_type()) { |
1799 has_decodeN = true; |
1799 // Note: in_decodeN is used only to define the type of new phi. |
1800 in_decodeN = ii->in(1); |
1800 // Find a non dead path otherwise phi type will be wrong. |
|
1801 if (ii->in(1)->bottom_type() != Type::TOP) { |
|
1802 has_decodeN = true; |
|
1803 in_decodeN = ii->in(1); |
|
1804 } |
1801 } else if (!ii->is_Phi()) { |
1805 } else if (!ii->is_Phi()) { |
1802 may_push = false; |
1806 may_push = false; |
1803 } |
1807 } |
1804 } |
1808 } |
1805 |
1809 |
1806 if (has_decodeN && may_push) { |
1810 if (has_decodeN && may_push) { |
1807 PhaseIterGVN *igvn = phase->is_IterGVN(); |
1811 PhaseIterGVN *igvn = phase->is_IterGVN(); |
1808 // Note: in_decodeN is used only to define the type of new phi here. |
|
1809 PhiNode *new_phi = PhiNode::make_blank(in(0), in_decodeN); |
1812 PhiNode *new_phi = PhiNode::make_blank(in(0), in_decodeN); |
1810 uint orig_cnt = req(); |
1813 uint orig_cnt = req(); |
1811 for (uint i=1; i<req(); ++i) {// For all paths in |
1814 for (uint i=1; i<req(); ++i) {// For all paths in |
1812 Node *ii = in(i); |
1815 Node *ii = in(i); |
1813 Node* new_ii = NULL; |
1816 Node* new_ii = NULL; |