2651 case Op_DivF:
2652 case Op_DivD:
2653 case Op_ModI:
2654 case Op_ModF:
2655 case Op_ModD:
2656 case Op_LoadB: // Same with Loads; they can sink
2657 case Op_LoadUS: // during loop optimizations.
2658 case Op_LoadD:
2659 case Op_LoadF:
2660 case Op_LoadI:
2661 case Op_LoadKlass:
2662 case Op_LoadNKlass:
2663 case Op_LoadL:
2664 case Op_LoadS:
2665 case Op_LoadP:
2666 case Op_LoadN:
2667 case Op_LoadRange:
2668 case Op_LoadD_unaligned:
2669 case Op_LoadL_unaligned:
2670 case Op_StrComp: // Does a bunch of load-like effects
2671 case Op_AryEq:
2672 pinned = false;
2673 }
2674 if( pinned ) {
2675 IdealLoopTree *choosen_loop = get_loop(n->is_CFG() ? n : get_ctrl(n));
2676 if( !choosen_loop->_child ) // Inner loop?
2677 choosen_loop->_body.push(n); // Collect inner loops
2678 return;
2679 }
2680 } else { // No slot zero
2681 if( n->is_CFG() ) { // CFG with no slot 0 is dead
2682 _nodes.map(n->_idx,0); // No block setting, it's globally dead
2683 return;
2684 }
2685 assert(!n->is_CFG() || n->outcnt() == 0, "");
2686 }
2687
2688 // Do I have a "safe range" I can select over?
2689 Node *early = get_ctrl(n);// Early location already computed
2690
|
2651 case Op_DivF:
2652 case Op_DivD:
2653 case Op_ModI:
2654 case Op_ModF:
2655 case Op_ModD:
2656 case Op_LoadB: // Same with Loads; they can sink
2657 case Op_LoadUS: // during loop optimizations.
2658 case Op_LoadD:
2659 case Op_LoadF:
2660 case Op_LoadI:
2661 case Op_LoadKlass:
2662 case Op_LoadNKlass:
2663 case Op_LoadL:
2664 case Op_LoadS:
2665 case Op_LoadP:
2666 case Op_LoadN:
2667 case Op_LoadRange:
2668 case Op_LoadD_unaligned:
2669 case Op_LoadL_unaligned:
2670 case Op_StrComp: // Does a bunch of load-like effects
2671 case Op_StrEquals:
2672 case Op_StrIndexOf:
2673 case Op_AryEq:
2674 pinned = false;
2675 }
2676 if( pinned ) {
2677 IdealLoopTree *choosen_loop = get_loop(n->is_CFG() ? n : get_ctrl(n));
2678 if( !choosen_loop->_child ) // Inner loop?
2679 choosen_loop->_body.push(n); // Collect inner loops
2680 return;
2681 }
2682 } else { // No slot zero
2683 if( n->is_CFG() ) { // CFG with no slot 0 is dead
2684 _nodes.map(n->_idx,0); // No block setting, it's globally dead
2685 return;
2686 }
2687 assert(!n->is_CFG() || n->outcnt() == 0, "");
2688 }
2689
2690 // Do I have a "safe range" I can select over?
2691 Node *early = get_ctrl(n);// Early location already computed
2692
|