< prev index next >

src/hotspot/share/opto/compile.cpp

Print this page
rev 51400 : [mq]: remove-c2-wb.patch


3383           n->set_req(2, shift);
3384         }
3385       }
3386       if (in2->outcnt() == 0) { // Remove dead node
3387         in2->disconnect_inputs(NULL, this);
3388       }
3389     }
3390     break;
3391   case Op_MemBarStoreStore:
3392   case Op_MemBarRelease:
3393     // Break the link with AllocateNode: it is no longer useful and
3394     // confuses register allocation.
3395     if (n->req() > MemBarNode::Precedent) {
3396       n->set_req(MemBarNode::Precedent, top());
3397     }
3398     break;
3399 #if INCLUDE_SHENANDOAHGC
3400   case Op_ShenandoahReadBarrier:
3401     break;
3402   case Op_ShenandoahWriteBarrier:
3403     assert(!ShenandoahWriteBarrierToIR, "should have been expanded already");
3404     break;
3405 #endif
3406   case Op_RangeCheck: {
3407     RangeCheckNode* rc = n->as_RangeCheck();
3408     Node* iff = new IfNode(rc->in(0), rc->in(1), rc->_prob, rc->_fcnt);
3409     n->subsume_by(iff, this);
3410     frc._tests.push(iff);
3411     break;
3412   }
3413   case Op_ConvI2L: {
3414     if (!Matcher::convi2l_type_required) {
3415       // Code generation on some platforms doesn't need accurate
3416       // ConvI2L types. Widening the type can help remove redundant
3417       // address computations.
3418       n->as_Type()->set_type(TypeLong::INT);
3419       ResourceMark rm;
3420       Node_List wq;
3421       wq.push(n);
3422       for (uint next = 0; next < wq.size(); next++) {
3423         Node *m = wq.at(next);




3383           n->set_req(2, shift);
3384         }
3385       }
3386       if (in2->outcnt() == 0) { // Remove dead node
3387         in2->disconnect_inputs(NULL, this);
3388       }
3389     }
3390     break;
3391   case Op_MemBarStoreStore:
3392   case Op_MemBarRelease:
3393     // Break the link with AllocateNode: it is no longer useful and
3394     // confuses register allocation.
3395     if (n->req() > MemBarNode::Precedent) {
3396       n->set_req(MemBarNode::Precedent, top());
3397     }
3398     break;
3399 #if INCLUDE_SHENANDOAHGC
3400   case Op_ShenandoahReadBarrier:
3401     break;
3402   case Op_ShenandoahWriteBarrier:
3403     assert(false, "should have been expanded already");
3404     break;
3405 #endif
3406   case Op_RangeCheck: {
3407     RangeCheckNode* rc = n->as_RangeCheck();
3408     Node* iff = new IfNode(rc->in(0), rc->in(1), rc->_prob, rc->_fcnt);
3409     n->subsume_by(iff, this);
3410     frc._tests.push(iff);
3411     break;
3412   }
3413   case Op_ConvI2L: {
3414     if (!Matcher::convi2l_type_required) {
3415       // Code generation on some platforms doesn't need accurate
3416       // ConvI2L types. Widening the type can help remove redundant
3417       // address computations.
3418       n->as_Type()->set_type(TypeLong::INT);
3419       ResourceMark rm;
3420       Node_List wq;
3421       wq.push(n);
3422       for (uint next = 0; next < wq.size(); next++) {
3423         Node *m = wq.at(next);


< prev index next >