@@ -101,7 +101,8 @@ void PhaseIdealLoop::register_control(Node* n, IdealLoopTree *loop, Node* pred,
101
101
// is an IfTrue projection. This code is also used to clone predicates to cloned loops.
102
102
IfTrueNode* PhaseIdealLoop::create_new_if_for_predicate (ParsePredicateSuccessProj* parse_predicate_success_proj,
103
103
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)) {
105
106
assert (parse_predicate_success_proj->is_uncommon_trap_if_pattern (reason), " must be a uct if pattern!" );
106
107
ParsePredicateNode* parse_predicate = parse_predicate_success_proj->in (0 )->as_ParsePredicate ();
107
108
ParsePredicateUncommonProj* uncommon_proj = parse_predicate->uncommon_proj ();
@@ -143,10 +144,12 @@ IfTrueNode* PhaseIdealLoop::create_new_if_for_predicate(ParsePredicateSuccessPro
143
144
IfNode* new_iff = nullptr ;
144
145
switch (opcode) {
145
146
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));
147
149
break ;
148
150
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));
150
153
break ;
151
154
case Op_ParsePredicate:
152
155
new_iff = new ParsePredicateNode (entry, reason, &_igvn);
@@ -1320,7 +1323,8 @@ IfTrueNode* PhaseIdealLoop::add_template_assertion_predicate(IfNode* iff, IdealL
1320
1323
Node* opaque_bol = new Opaque4Node (C, bol, _igvn.intcon (1 )); // This will go away once loop opts are over
1321
1324
C->add_template_assertion_predicate_opaq (opaque_bol);
1322
1325
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));
1324
1328
_igvn.replace_input_of (new_proj->in (0 ), 1 , opaque_bol);
1325
1329
assert (opaque_init->outcnt () > 0 , " should be used" );
1326
1330
@@ -1345,7 +1349,8 @@ IfTrueNode* PhaseIdealLoop::add_template_assertion_predicate(IfNode* iff, IdealL
1345
1349
opaque_bol = new Opaque4Node (C, bol, _igvn.intcon (1 ));
1346
1350
C->add_template_assertion_predicate_opaq (opaque_bol);
1347
1351
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));
1349
1354
_igvn.replace_input_of (new_proj->in (0 ), 1 , opaque_bol);
1350
1355
assert (max_value->outcnt () > 0 , " should be used" );
1351
1356
assert (assertion_predicate_has_loop_opaque_node (new_proj->in (0 )->as_If ()), " unexpected" );
0 commit comments