< prev index next >

src/share/vm/opto/compile.cpp

Print this page
rev 10493 : keep
rev 10498 : C2: add SafePointScalarObjectNodes from ValueTypeNodes to SafePointNodes without an allocation + propagate materialized value type in the graph


3235       if (in2->outcnt() == 0) { // Remove dead node
3236         in2->disconnect_inputs(NULL, this);
3237       }
3238     }
3239     break;
3240   case Op_MemBarStoreStore:
3241   case Op_MemBarRelease:
3242     // Break the link with AllocateNode: it is no longer useful and
3243     // confuses register allocation.
3244     if (n->req() > MemBarNode::Precedent) {
3245       n->set_req(MemBarNode::Precedent, top());
3246     }
3247     break;
3248   case Op_RangeCheck: {
3249     RangeCheckNode* rc = n->as_RangeCheck();
3250     Node* iff = new IfNode(rc->in(0), rc->in(1), rc->_prob, rc->_fcnt);
3251     n->subsume_by(iff, this);
3252     frc._tests.push(iff);
3253     break;
3254   }








3255   default:
3256     assert( !n->is_Call(), "" );
3257     assert( !n->is_Mem(), "" );
3258     assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN");
3259     break;
3260   }
3261 
3262   // Collect CFG split points
3263   if (n->is_MultiBranch() && !n->is_RangeCheck()) {
3264     frc._tests.push(n);
3265   }
3266 }
3267 
3268 //------------------------------final_graph_reshaping_walk---------------------
3269 // Replacing Opaque nodes with their input in final_graph_reshaping_impl(),
3270 // requires that the walk visits a node's inputs before visiting the node.
3271 void Compile::final_graph_reshaping_walk( Node_Stack &nstack, Node *root, Final_Reshape_Counts &frc ) {
3272   ResourceArea *area = Thread::current()->resource_area();
3273   Unique_Node_List sfpt(area);
3274 




3235       if (in2->outcnt() == 0) { // Remove dead node
3236         in2->disconnect_inputs(NULL, this);
3237       }
3238     }
3239     break;
3240   case Op_MemBarStoreStore:
3241   case Op_MemBarRelease:
3242     // Break the link with AllocateNode: it is no longer useful and
3243     // confuses register allocation.
3244     if (n->req() > MemBarNode::Precedent) {
3245       n->set_req(MemBarNode::Precedent, top());
3246     }
3247     break;
3248   case Op_RangeCheck: {
3249     RangeCheckNode* rc = n->as_RangeCheck();
3250     Node* iff = new IfNode(rc->in(0), rc->in(1), rc->_prob, rc->_fcnt);
3251     n->subsume_by(iff, this);
3252     frc._tests.push(iff);
3253     break;
3254   }
3255   case Op_ValueType: {
3256     ValueTypeNode* vt = n->as_ValueType();
3257     vt->make_scalar_in_safepoints(this);
3258     if (vt->outcnt() == 0) {
3259       vt->disconnect_inputs(NULL, this);
3260     }
3261     break;
3262   }
3263   default:
3264     assert( !n->is_Call(), "" );
3265     assert( !n->is_Mem(), "" );
3266     assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN");
3267     break;
3268   }
3269 
3270   // Collect CFG split points
3271   if (n->is_MultiBranch() && !n->is_RangeCheck()) {
3272     frc._tests.push(n);
3273   }
3274 }
3275 
3276 //------------------------------final_graph_reshaping_walk---------------------
3277 // Replacing Opaque nodes with their input in final_graph_reshaping_impl(),
3278 // requires that the walk visits a node's inputs before visiting the node.
3279 void Compile::final_graph_reshaping_walk( Node_Stack &nstack, Node *root, Final_Reshape_Counts &frc ) {
3280   ResourceArea *area = Thread::current()->resource_area();
3281   Unique_Node_List sfpt(area);
3282 


< prev index next >