3525 case Op_LoadUB: // during loop optimizations.
3526 case Op_LoadUS:
3527 case Op_LoadD:
3528 case Op_LoadF:
3529 case Op_LoadI:
3530 case Op_LoadKlass:
3531 case Op_LoadNKlass:
3532 case Op_LoadL:
3533 case Op_LoadS:
3534 case Op_LoadP:
3535 case Op_LoadN:
3536 case Op_LoadRange:
3537 case Op_LoadD_unaligned:
3538 case Op_LoadL_unaligned:
3539 case Op_StrComp: // Does a bunch of load-like effects
3540 case Op_StrEquals:
3541 case Op_StrIndexOf:
3542 case Op_AryEq:
3543 case Op_ShenandoahReadBarrier:
3544 case Op_ShenandoahWriteBarrier:
3545 case Op_ShenandoahWBMemProj:
3546 pinned = false;
3547 }
3548 if( pinned ) {
3549 IdealLoopTree *chosen_loop = get_loop(n->is_CFG() ? n : get_ctrl(n));
3550 if( !chosen_loop->_child ) // Inner loop?
3551 chosen_loop->_body.push(n); // Collect inner loops
3552 return;
3553 }
3554 } else { // No slot zero
3555 if( n->is_CFG() ) { // CFG with no slot 0 is dead
3556 _nodes.map(n->_idx,0); // No block setting, it's globally dead
3557 return;
3558 }
3559 assert(!n->is_CFG() || n->outcnt() == 0, "");
3560 }
3561
3562 // Do I have a "safe range" I can select over?
3563 Node *early = get_ctrl(n);// Early location already computed
3564
3565 // Compute latest point this Node can go
|
3525 case Op_LoadUB: // during loop optimizations.
3526 case Op_LoadUS:
3527 case Op_LoadD:
3528 case Op_LoadF:
3529 case Op_LoadI:
3530 case Op_LoadKlass:
3531 case Op_LoadNKlass:
3532 case Op_LoadL:
3533 case Op_LoadS:
3534 case Op_LoadP:
3535 case Op_LoadN:
3536 case Op_LoadRange:
3537 case Op_LoadD_unaligned:
3538 case Op_LoadL_unaligned:
3539 case Op_StrComp: // Does a bunch of load-like effects
3540 case Op_StrEquals:
3541 case Op_StrIndexOf:
3542 case Op_AryEq:
3543 case Op_ShenandoahReadBarrier:
3544 case Op_ShenandoahWriteBarrier:
3545 pinned = false;
3546 }
3547 if( pinned ) {
3548 IdealLoopTree *chosen_loop = get_loop(n->is_CFG() ? n : get_ctrl(n));
3549 if( !chosen_loop->_child ) // Inner loop?
3550 chosen_loop->_body.push(n); // Collect inner loops
3551 return;
3552 }
3553 } else { // No slot zero
3554 if( n->is_CFG() ) { // CFG with no slot 0 is dead
3555 _nodes.map(n->_idx,0); // No block setting, it's globally dead
3556 return;
3557 }
3558 assert(!n->is_CFG() || n->outcnt() == 0, "");
3559 }
3560
3561 // Do I have a "safe range" I can select over?
3562 Node *early = get_ctrl(n);// Early location already computed
3563
3564 // Compute latest point this Node can go
|