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);
|