705 |
705 |
706 if (directive->ReplayInlineOption) { |
706 if (directive->ReplayInlineOption) { |
707 _replay_inline_data = ciReplay::load_inline_data(method(), entry_bci(), ci_env->comp_level()); |
707 _replay_inline_data = ciReplay::load_inline_data(method(), entry_bci(), ci_env->comp_level()); |
708 } |
708 } |
709 #endif |
709 #endif |
710 set_print_inlining(directive->PrintInliningOption NOT_PRODUCT( || PrintOptoInlining)); |
710 set_print_inlining(directive->PrintInliningOption || PrintOptoInlining); |
711 set_print_intrinsics(directive->PrintIntrinsicsOption); |
711 set_print_intrinsics(directive->PrintIntrinsicsOption); |
712 set_has_irreducible_loop(true); // conservative until build_loop_tree() reset it |
712 set_has_irreducible_loop(true); // conservative until build_loop_tree() reset it |
713 |
713 |
714 if (ProfileTraps RTM_OPT_ONLY( || UseRTMLocking )) { |
714 if (ProfileTraps RTM_OPT_ONLY( || UseRTMLocking )) { |
715 // Make sure the method being compiled gets its own MDO, |
715 // Make sure the method being compiled gets its own MDO, |
3179 // confuses register allocation. |
3179 // confuses register allocation. |
3180 if (n->req() > MemBarNode::Precedent) { |
3180 if (n->req() > MemBarNode::Precedent) { |
3181 n->set_req(MemBarNode::Precedent, top()); |
3181 n->set_req(MemBarNode::Precedent, top()); |
3182 } |
3182 } |
3183 break; |
3183 break; |
|
3184 case Op_RangeCheck: { |
|
3185 RangeCheckNode* rc = n->as_RangeCheck(); |
|
3186 Node* iff = new IfNode(rc->in(0), rc->in(1), rc->_prob, rc->_fcnt); |
|
3187 n->subsume_by(iff, this); |
|
3188 frc._tests.push(iff); |
|
3189 break; |
|
3190 } |
3184 default: |
3191 default: |
3185 assert( !n->is_Call(), "" ); |
3192 assert( !n->is_Call(), "" ); |
3186 assert( !n->is_Mem(), "" ); |
3193 assert( !n->is_Mem(), "" ); |
3187 assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN"); |
3194 assert( nop != Op_ProfileBoolean, "should be eliminated during IGVN"); |
3188 break; |
3195 break; |
3189 } |
3196 } |
3190 |
3197 |
3191 // Collect CFG split points |
3198 // Collect CFG split points |
3192 if (n->is_MultiBranch()) |
3199 if (n->is_MultiBranch() && !n->is_RangeCheck()) { |
3193 frc._tests.push(n); |
3200 frc._tests.push(n); |
|
3201 } |
3194 } |
3202 } |
3195 |
3203 |
3196 //------------------------------final_graph_reshaping_walk--------------------- |
3204 //------------------------------final_graph_reshaping_walk--------------------- |
3197 // Replacing Opaque nodes with their input in final_graph_reshaping_impl(), |
3205 // Replacing Opaque nodes with their input in final_graph_reshaping_impl(), |
3198 // requires that the walk visits a node's inputs before visiting the node. |
3206 // requires that the walk visits a node's inputs before visiting the node. |