src/hotspot/share/opto/phaseX.cpp
changeset 49816 a3e79f97e86b
parent 49487 bde392011cd8
child 50180 ffa644980dff
equal deleted inserted replaced
49815:76e3bcb9bee1 49816:a3e79f97e86b
  1626     }
  1626     }
  1627     if (use_op == Op_Initialize) {
  1627     if (use_op == Op_Initialize) {
  1628       Node* imem = use->as_Initialize()->proj_out_or_null(TypeFunc::Memory);
  1628       Node* imem = use->as_Initialize()->proj_out_or_null(TypeFunc::Memory);
  1629       if (imem != NULL)  add_users_to_worklist0(imem);
  1629       if (imem != NULL)  add_users_to_worklist0(imem);
  1630     }
  1630     }
  1631     // Loading the java mirror from a klass oop requires two loads and the type
  1631     // Loading the java mirror from a Klass requires two loads and the type
  1632     // of the mirror load depends on the type of 'n'. See LoadNode::Value().
  1632     // of the mirror load depends on the type of 'n'. See LoadNode::Value().
       
  1633     // If the code pattern requires a barrier for
       
  1634     //   mirror = ((OopHandle)mirror)->resolve();
       
  1635     // this won't match.
  1633     if (use_op == Op_LoadP && use->bottom_type()->isa_rawptr()) {
  1636     if (use_op == Op_LoadP && use->bottom_type()->isa_rawptr()) {
  1634       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
  1637       for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
  1635         Node* u = use->fast_out(i2);
  1638         Node* u = use->fast_out(i2);
  1636         const Type* ut = u->bottom_type();
  1639         const Type* ut = u->bottom_type();
  1637         if (u->Opcode() == Op_LoadP && ut->isa_instptr()) {
  1640         if (u->Opcode() == Op_LoadP && ut->isa_instptr()) {
  1772           PhiNode* phi = countedloop_phi_from_cmp((CmpINode*)m, n);
  1775           PhiNode* phi = countedloop_phi_from_cmp((CmpINode*)m, n);
  1773           if (phi != NULL) {
  1776           if (phi != NULL) {
  1774             worklist.push(phi);
  1777             worklist.push(phi);
  1775           }
  1778           }
  1776         }
  1779         }
  1777         // Loading the java mirror from a klass oop requires two loads and the type
  1780         // Loading the java mirror from a Klass requires two loads and the type
  1778         // of the mirror load depends on the type of 'n'. See LoadNode::Value().
  1781         // of the mirror load depends on the type of 'n'. See LoadNode::Value().
       
  1782         // If the code pattern requires a barrier for
       
  1783         //   mirror = ((OopHandle)mirror)->resolve();
       
  1784         // this won't match.
  1779         if (m_op == Op_LoadP && m->bottom_type()->isa_rawptr()) {
  1785         if (m_op == Op_LoadP && m->bottom_type()->isa_rawptr()) {
  1780           for (DUIterator_Fast i2max, i2 = m->fast_outs(i2max); i2 < i2max; i2++) {
  1786           for (DUIterator_Fast i2max, i2 = m->fast_outs(i2max); i2 < i2max; i2++) {
  1781             Node* u = m->fast_out(i2);
  1787             Node* u = m->fast_out(i2);
  1782             const Type* ut = u->bottom_type();
  1788             const Type* ut = u->bottom_type();
  1783             if (u->Opcode() == Op_LoadP && ut->isa_instptr() && ut != type(u)) {
  1789             if (u->Opcode() == Op_LoadP && ut->isa_instptr() && ut != type(u)) {