equal
deleted
inserted
replaced
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); |