804 nphi = node_map[ophi->_idx]->as_Phi(); |
804 nphi = node_map[ophi->_idx]->as_Phi(); |
805 for (; i < ophi->req(); i++) { |
805 for (; i < ophi->req(); i++) { |
806 Node *in = ophi->in(i); |
806 Node *in = ophi->in(i); |
807 if (in == NULL || igvn->type(in) == Type::TOP) |
807 if (in == NULL || igvn->type(in) == Type::TOP) |
808 continue; |
808 continue; |
809 Node *opt = MemNode::optimize_simple_memory_chain(in, at, igvn); |
809 Node *opt = MemNode::optimize_simple_memory_chain(in, t_oop, NULL, igvn); |
810 PhiNode *optphi = opt->is_Phi() ? opt->as_Phi() : NULL; |
810 PhiNode *optphi = opt->is_Phi() ? opt->as_Phi() : NULL; |
811 if (optphi != NULL && optphi->adr_type() == TypePtr::BOTTOM) { |
811 if (optphi != NULL && optphi->adr_type() == TypePtr::BOTTOM) { |
812 opt = node_map[optphi->_idx]; |
812 opt = node_map[optphi->_idx]; |
813 if (opt == NULL) { |
813 if (opt == NULL) { |
814 stack.push(ophi, i); |
814 stack.push(ophi, i); |
1919 // Other optimizations on the memory chain |
1919 // Other optimizations on the memory chain |
1920 // |
1920 // |
1921 const TypePtr* at = adr_type(); |
1921 const TypePtr* at = adr_type(); |
1922 for( uint i=1; i<req(); ++i ) {// For all paths in |
1922 for( uint i=1; i<req(); ++i ) {// For all paths in |
1923 Node *ii = in(i); |
1923 Node *ii = in(i); |
1924 Node *new_in = MemNode::optimize_memory_chain(ii, at, phase); |
1924 Node *new_in = MemNode::optimize_memory_chain(ii, at, NULL, phase); |
1925 if (ii != new_in ) { |
1925 if (ii != new_in ) { |
1926 set_req(i, new_in); |
1926 set_req(i, new_in); |
1927 progress = this; |
1927 progress = this; |
1928 } |
1928 } |
1929 } |
1929 } |