< prev index next >

src/share/vm/opto/loopnode.cpp

Print this page
rev 10595 : [backport] clean up obsolete c2 code
 - barriers are never added on constant oops
 - write barriers are always expanded to IR


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


< prev index next >