< prev index next >

src/hotspot/share/opto/loopTransform.cpp

Print this page




2778             ((bol->in(1)->Opcode() == Op_StorePConditional ) ||
2779              (bol->in(1)->Opcode() == Op_StoreIConditional ) ||
2780              (bol->in(1)->Opcode() == Op_StoreLConditional ) ||
2781              (bol->in(1)->Opcode() == Op_CompareAndExchangeB ) ||
2782              (bol->in(1)->Opcode() == Op_CompareAndExchangeS ) ||
2783              (bol->in(1)->Opcode() == Op_CompareAndExchangeI ) ||
2784              (bol->in(1)->Opcode() == Op_CompareAndExchangeL ) ||
2785              (bol->in(1)->Opcode() == Op_CompareAndExchangeP ) ||
2786              (bol->in(1)->Opcode() == Op_CompareAndExchangeN ) ||
2787              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapB ) ||
2788              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapS ) ||
2789              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapI ) ||
2790              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapL ) ||
2791              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapP ) ||
2792              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapN ) ||
2793              (bol->in(1)->Opcode() == Op_CompareAndSwapB ) ||
2794              (bol->in(1)->Opcode() == Op_CompareAndSwapS ) ||
2795              (bol->in(1)->Opcode() == Op_CompareAndSwapI ) ||
2796              (bol->in(1)->Opcode() == Op_CompareAndSwapL ) ||
2797              (bol->in(1)->Opcode() == Op_CompareAndSwapP ) ||
2798              (bol->in(1)->Opcode() == Op_CompareAndSwapN )))






2799           return;               // Allocation loops RARELY take backedge
2800         // Find the OTHER exit path from the IF
2801         Node* ex = iff->proj_out(1-test_con);
2802         float p = iff->_prob;
2803         if( !phase->is_member( this, ex ) && iff->_fcnt == COUNT_UNKNOWN ) {
2804           if( top == Op_IfTrue ) {
2805             if( p < (PROB_FAIR + PROB_UNLIKELY_MAG(3))) {
2806               iff->_prob = PROB_STATIC_FREQUENT;
2807             }
2808           } else {
2809             if( p > (PROB_FAIR - PROB_UNLIKELY_MAG(3))) {
2810               iff->_prob = PROB_STATIC_INFREQUENT;
2811             }
2812           }
2813         }
2814       }
2815     }
2816     test = phase->idom(test);
2817   }
2818 }




2778             ((bol->in(1)->Opcode() == Op_StorePConditional ) ||
2779              (bol->in(1)->Opcode() == Op_StoreIConditional ) ||
2780              (bol->in(1)->Opcode() == Op_StoreLConditional ) ||
2781              (bol->in(1)->Opcode() == Op_CompareAndExchangeB ) ||
2782              (bol->in(1)->Opcode() == Op_CompareAndExchangeS ) ||
2783              (bol->in(1)->Opcode() == Op_CompareAndExchangeI ) ||
2784              (bol->in(1)->Opcode() == Op_CompareAndExchangeL ) ||
2785              (bol->in(1)->Opcode() == Op_CompareAndExchangeP ) ||
2786              (bol->in(1)->Opcode() == Op_CompareAndExchangeN ) ||
2787              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapB ) ||
2788              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapS ) ||
2789              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapI ) ||
2790              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapL ) ||
2791              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapP ) ||
2792              (bol->in(1)->Opcode() == Op_WeakCompareAndSwapN ) ||
2793              (bol->in(1)->Opcode() == Op_CompareAndSwapB ) ||
2794              (bol->in(1)->Opcode() == Op_CompareAndSwapS ) ||
2795              (bol->in(1)->Opcode() == Op_CompareAndSwapI ) ||
2796              (bol->in(1)->Opcode() == Op_CompareAndSwapL ) ||
2797              (bol->in(1)->Opcode() == Op_CompareAndSwapP ) ||
2798              (bol->in(1)->Opcode() == Op_CompareAndSwapN ) ||
2799              (bol->in(1)->Opcode() == Op_ShenandoahCompareAndExchangeP ) ||
2800              (bol->in(1)->Opcode() == Op_ShenandoahCompareAndExchangeN ) ||
2801              (bol->in(1)->Opcode() == Op_ShenandoahWeakCompareAndSwapP ) ||
2802              (bol->in(1)->Opcode() == Op_ShenandoahWeakCompareAndSwapN ) ||
2803              (bol->in(1)->Opcode() == Op_ShenandoahCompareAndSwapP ) ||
2804              (bol->in(1)->Opcode() == Op_ShenandoahCompareAndSwapN )))
2805           return;               // Allocation loops RARELY take backedge
2806         // Find the OTHER exit path from the IF
2807         Node* ex = iff->proj_out(1-test_con);
2808         float p = iff->_prob;
2809         if( !phase->is_member( this, ex ) && iff->_fcnt == COUNT_UNKNOWN ) {
2810           if( top == Op_IfTrue ) {
2811             if( p < (PROB_FAIR + PROB_UNLIKELY_MAG(3))) {
2812               iff->_prob = PROB_STATIC_FREQUENT;
2813             }
2814           } else {
2815             if( p > (PROB_FAIR - PROB_UNLIKELY_MAG(3))) {
2816               iff->_prob = PROB_STATIC_INFREQUENT;
2817             }
2818           }
2819         }
2820       }
2821     }
2822     test = phase->idom(test);
2823   }
2824 }


< prev index next >