@@ -101,7 +101,8 @@ void PhaseIdealLoop::register_control(Node* n, IdealLoopTree *loop, Node* pred,
101101// is an IfTrue projection. This code is also used to clone predicates to cloned loops.
102102IfTrueNode* PhaseIdealLoop::create_new_if_for_predicate (ParsePredicateSuccessProj* parse_predicate_success_proj,
103103 Node* new_entry, const Deoptimization::DeoptReason reason,
104- const int opcode, const bool rewire_uncommon_proj_phi_inputs) {
104+ const int opcode, const bool rewire_uncommon_proj_phi_inputs
105+ NOT_PRODUCT (COMMA AssertionPredicateType assertion_predicate_type)) {
105106 assert (parse_predicate_success_proj->is_uncommon_trap_if_pattern (reason), " must be a uct if pattern!" );
106107 ParsePredicateNode* parse_predicate = parse_predicate_success_proj->in (0 )->as_ParsePredicate ();
107108 ParsePredicateUncommonProj* uncommon_proj = parse_predicate->uncommon_proj ();
@@ -143,10 +144,12 @@ IfTrueNode* PhaseIdealLoop::create_new_if_for_predicate(ParsePredicateSuccessPro
143144 IfNode* new_iff = nullptr ;
144145 switch (opcode) {
145146 case Op_If:
146- new_iff = new IfNode (entry, parse_predicate->in (1 ), parse_predicate->_prob , parse_predicate->_fcnt );
147+ new_iff = new IfNode (entry, parse_predicate->in (1 ), parse_predicate->_prob , parse_predicate->_fcnt
148+ NOT_PRODUCT (COMMA assertion_predicate_type));
147149 break ;
148150 case Op_RangeCheck:
149- new_iff = new RangeCheckNode (entry, parse_predicate->in (1 ), parse_predicate->_prob , parse_predicate->_fcnt );
151+ new_iff = new RangeCheckNode (entry, parse_predicate->in (1 ), parse_predicate->_prob , parse_predicate->_fcnt
152+ NOT_PRODUCT (COMMA assertion_predicate_type));
150153 break ;
151154 case Op_ParsePredicate:
152155 new_iff = new ParsePredicateNode (entry, reason, &_igvn);
@@ -1320,7 +1323,8 @@ IfTrueNode* PhaseIdealLoop::add_template_assertion_predicate(IfNode* iff, IdealL
13201323 Node* opaque_bol = new Opaque4Node (C, bol, _igvn.intcon (1 )); // This will go away once loop opts are over
13211324 C->add_template_assertion_predicate_opaq (opaque_bol);
13221325 register_new_node (opaque_bol, upper_bound_proj);
1323- IfTrueNode* new_proj = create_new_if_for_predicate (parse_predicate_proj, nullptr , reason, overflow ? Op_If : iff->Opcode ());
1326+ IfTrueNode* new_proj = create_new_if_for_predicate (parse_predicate_proj, nullptr , reason, overflow ? Op_If : iff->Opcode (),
1327+ false NOT_PRODUCT (COMMA AssertionPredicateType::Init_value));
13241328 _igvn.replace_input_of (new_proj->in (0 ), 1 , opaque_bol);
13251329 assert (opaque_init->outcnt () > 0 , " should be used" );
13261330
@@ -1345,7 +1349,8 @@ IfTrueNode* PhaseIdealLoop::add_template_assertion_predicate(IfNode* iff, IdealL
13451349 opaque_bol = new Opaque4Node (C, bol, _igvn.intcon (1 ));
13461350 C->add_template_assertion_predicate_opaq (opaque_bol);
13471351 register_new_node (opaque_bol, new_proj);
1348- new_proj = create_new_if_for_predicate (parse_predicate_proj, nullptr , reason, overflow ? Op_If : iff->Opcode ());
1352+ new_proj = create_new_if_for_predicate (parse_predicate_proj, nullptr , reason, overflow ? Op_If : iff->Opcode (),
1353+ false NOT_PRODUCT (COMMA AssertionPredicateType::Last_value));
13491354 _igvn.replace_input_of (new_proj->in (0 ), 1 , opaque_bol);
13501355 assert (max_value->outcnt () > 0 , " should be used" );
13511356 assert (assertion_predicate_has_loop_opaque_node (new_proj->in (0 )->as_If ()), " unexpected" );
0 commit comments