3874 } else {
3875 // Note that it is possible for a LoopNode to reach here, if the
3876 // backedge has been made unreachable (hence the LoopNode no longer
3877 // denotes a Loop, and will eventually be removed).
3878
3879 // Record tightest enclosing loop for self. Mark as post-visited.
3880 set_loop(n, innermost);
3881 // Also record has_call flag early on
3882 if( innermost ) {
3883 if( n->is_Call() && !n->is_CallLeaf() && !n->is_macro() ) {
3884 // Do not count uncommon calls
3885 if( !n->is_CallStaticJava() || !n->as_CallStaticJava()->_name ) {
3886 Node *iff = n->in(0)->in(0);
3887 // No any calls for vectorized loops.
3888 if( UseSuperWord || !iff->is_If() ||
3889 (n->in(0)->Opcode() == Op_IfFalse &&
3890 (1.0 - iff->as_If()->_prob) >= 0.01) ||
3891 (iff->as_If()->_prob >= 0.01) )
3892 innermost->_has_call = 1;
3893 }
3894 } else if( n->is_Allocate() && n->as_Allocate()->_is_scalar_replaceable ) {
3895 // Disable loop optimizations if the loop has a scalar replaceable
3896 // allocation. This disabling may cause a potential performance lost
3897 // if the allocation is not eliminated for some reason.
3898 innermost->_allow_optimizations = false;
3899 innermost->_has_call = 1; // = true
3900 } else if (n->Opcode() == Op_SafePoint) {
3901 // Record all safepoints in this loop.
3902 if (innermost->_safepts == NULL) innermost->_safepts = new Node_List();
3903 innermost->_safepts->push(n);
3904 }
3905 }
3906 }
3907
3908 // Flag as post-visited now
3909 set_postvisited(n);
3910 return pre_order;
3911 }
3912
3913
3914 //------------------------------build_loop_early-------------------------------
|
3874 } else {
3875 // Note that it is possible for a LoopNode to reach here, if the
3876 // backedge has been made unreachable (hence the LoopNode no longer
3877 // denotes a Loop, and will eventually be removed).
3878
3879 // Record tightest enclosing loop for self. Mark as post-visited.
3880 set_loop(n, innermost);
3881 // Also record has_call flag early on
3882 if( innermost ) {
3883 if( n->is_Call() && !n->is_CallLeaf() && !n->is_macro() ) {
3884 // Do not count uncommon calls
3885 if( !n->is_CallStaticJava() || !n->as_CallStaticJava()->_name ) {
3886 Node *iff = n->in(0)->in(0);
3887 // No any calls for vectorized loops.
3888 if( UseSuperWord || !iff->is_If() ||
3889 (n->in(0)->Opcode() == Op_IfFalse &&
3890 (1.0 - iff->as_If()->_prob) >= 0.01) ||
3891 (iff->as_If()->_prob >= 0.01) )
3892 innermost->_has_call = 1;
3893 }
3894 } else if( n->is_Allocate() && (n->as_Allocate()->_is_scalar_replaceable || n->as_Allocate()->_is_stack_allocateable) ) {
3895 // Disable loop optimizations if the loop has a scalar replaceable
3896 // allocation. This disabling may cause a potential performance lost
3897 // if the allocation is not eliminated for some reason.
3898 innermost->_allow_optimizations = false;
3899 innermost->_has_call = 1; // = true
3900 } else if (n->Opcode() == Op_SafePoint) {
3901 // Record all safepoints in this loop.
3902 if (innermost->_safepts == NULL) innermost->_safepts = new Node_List();
3903 innermost->_safepts->push(n);
3904 }
3905 }
3906 }
3907
3908 // Flag as post-visited now
3909 set_postvisited(n);
3910 return pre_order;
3911 }
3912
3913
3914 //------------------------------build_loop_early-------------------------------
|