src/share/vm/opto/loopnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6761600 Sdiff src/share/vm/opto

src/share/vm/opto/loopnode.cpp

Print this page




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 


src/share/vm/opto/loopnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File