< prev index next >

src/share/vm/opto/escape.cpp

Print this page

        

*** 372,382 **** add_call_node(n->as_Call()); } else if (n->as_Call()->tf()->returns_value_type_as_fields()) { bool returns_oop = false; for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax && !returns_oop; i++) { ProjNode* pn = n->fast_out(i)->as_Proj(); ! if (pn->_con >= TypeFunc::Parms && pn->bottom_type()->isa_oopptr()) { returns_oop = true; } } if (returns_oop) { add_call_node(n->as_Call()); --- 372,382 ---- add_call_node(n->as_Call()); } else if (n->as_Call()->tf()->returns_value_type_as_fields()) { bool returns_oop = false; for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax && !returns_oop; i++) { ProjNode* pn = n->fast_out(i)->as_Proj(); ! if (pn->_con >= TypeFunc::Parms && pn->bottom_type()->isa_ptr()) { returns_oop = true; } } if (returns_oop) { add_call_node(n->as_Call());
*** 484,494 **** break; } case Op_Proj: { // we are only interested in the oop result projection from a call if (n->as_Proj()->_con >= TypeFunc::Parms && n->in(0)->is_Call() && ! (n->in(0)->as_Call()->returns_pointer() || n->bottom_type()->isa_oopptr())) { assert((n->as_Proj()->_con == TypeFunc::Parms && n->in(0)->as_Call()->returns_pointer()) || n->in(0)->as_Call()->tf()->returns_value_type_as_fields(), "what kind of oop return is it?"); add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(0), delayed_worklist); } --- 484,494 ---- break; } case Op_Proj: { // we are only interested in the oop result projection from a call if (n->as_Proj()->_con >= TypeFunc::Parms && n->in(0)->is_Call() && ! (n->in(0)->as_Call()->returns_pointer() || n->bottom_type()->isa_ptr())) { assert((n->as_Proj()->_con == TypeFunc::Parms && n->in(0)->as_Call()->returns_pointer()) || n->in(0)->as_Call()->tf()->returns_value_type_as_fields(), "what kind of oop return is it?"); add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(0), delayed_worklist); }
*** 693,703 **** ELSE_FAIL("Op_Phi"); } case Op_Proj: { // we are only interested in the oop result projection from a call if (n->as_Proj()->_con >= TypeFunc::Parms && n->in(0)->is_Call() && ! (n->in(0)->as_Call()->returns_pointer()|| n->bottom_type()->isa_oopptr())) { assert((n->as_Proj()->_con == TypeFunc::Parms && n->in(0)->as_Call()->returns_pointer()) || n->in(0)->as_Call()->tf()->returns_value_type_as_fields(), "what kind of oop return is it?"); add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(0), NULL); break; } --- 693,703 ---- ELSE_FAIL("Op_Phi"); } case Op_Proj: { // we are only interested in the oop result projection from a call if (n->as_Proj()->_con >= TypeFunc::Parms && n->in(0)->is_Call() && ! (n->in(0)->as_Call()->returns_pointer()|| n->bottom_type()->isa_ptr())) { assert((n->as_Proj()->_con == TypeFunc::Parms && n->in(0)->as_Call()->returns_pointer()) || n->in(0)->as_Call()->tf()->returns_value_type_as_fields(), "what kind of oop return is it?"); add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(0), NULL); break; }
< prev index next >