hotspot/src/share/vm/opto/parse1.cpp
changeset 25930 eae8b7490d2c
parent 25917 4502b5680f05
child 26913 9ad70cd32368
equal deleted inserted replaced
25929:4fd732076fe1 25930:eae8b7490d2c
  1755       // Instead, wire the new split into a MergeMem on the backedge.
  1755       // Instead, wire the new split into a MergeMem on the backedge.
  1756       // The optimizer will sort it out, slicing the phi.
  1756       // The optimizer will sort it out, slicing the phi.
  1757       if (remerge == NULL) {
  1757       if (remerge == NULL) {
  1758         assert(base != NULL, "");
  1758         assert(base != NULL, "");
  1759         assert(base->in(0) != NULL, "should not be xformed away");
  1759         assert(base->in(0) != NULL, "should not be xformed away");
  1760         remerge = MergeMemNode::make(C, base->in(pnum));
  1760         remerge = MergeMemNode::make(base->in(pnum));
  1761         gvn().set_type(remerge, Type::MEMORY);
  1761         gvn().set_type(remerge, Type::MEMORY);
  1762         base->set_req(pnum, remerge);
  1762         base->set_req(pnum, remerge);
  1763       }
  1763       }
  1764       remerge->set_memory_at(mms.alias_idx(), q);
  1764       remerge->set_memory_at(mms.alias_idx(), q);
  1765       continue;
  1765       continue;
  2198   // edge will keep card-marks and oop-stores from floating up from below a
  2198   // edge will keep card-marks and oop-stores from floating up from below a
  2199   // SafePoint and our true dependency added here will keep them from floating
  2199   // SafePoint and our true dependency added here will keep them from floating
  2200   // down below a SafePoint.
  2200   // down below a SafePoint.
  2201 
  2201 
  2202   // Clone the current memory state
  2202   // Clone the current memory state
  2203   Node* mem = MergeMemNode::make(C, map()->memory());
  2203   Node* mem = MergeMemNode::make(map()->memory());
  2204 
  2204 
  2205   mem = _gvn.transform(mem);
  2205   mem = _gvn.transform(mem);
  2206 
  2206 
  2207   // Pass control through the safepoint
  2207   // Pass control through the safepoint
  2208   sfpnt->init_req(TypeFunc::Control  , control());
  2208   sfpnt->init_req(TypeFunc::Control  , control());
  2212   sfpnt->init_req(TypeFunc::ReturnAdr, top() );
  2212   sfpnt->init_req(TypeFunc::ReturnAdr, top() );
  2213   sfpnt->init_req(TypeFunc::FramePtr , top() );
  2213   sfpnt->init_req(TypeFunc::FramePtr , top() );
  2214 
  2214 
  2215   // Create a node for the polling address
  2215   // Create a node for the polling address
  2216   if( add_poll_param ) {
  2216   if( add_poll_param ) {
  2217     Node *polladr = ConPNode::make(C, (address)os::get_polling_page());
  2217     Node *polladr = ConPNode::make((address)os::get_polling_page());
  2218     sfpnt->init_req(TypeFunc::Parms+0, _gvn.transform(polladr));
  2218     sfpnt->init_req(TypeFunc::Parms+0, _gvn.transform(polladr));
  2219   }
  2219   }
  2220 
  2220 
  2221   // Fix up the JVM State edges
  2221   // Fix up the JVM State edges
  2222   add_safepoint_edges(sfpnt);
  2222   add_safepoint_edges(sfpnt);