comparison src/share/vm/c1/c1_Optimizer.cpp @ 4764:e5ac210043cd

7123108: C1: assert(if_state != NULL) failed: states do not match up Summary: In CEE, ensure if and common successor state are at the same inline level Reviewed-by: never
author roland
date Thu, 22 Dec 2011 10:55:53 +0100
parents 7bca37d28f32
children 701a83c86f28
comparison
equal deleted inserted replaced
4763:1dc233a8c7fe 4764:e5ac210043cd
123 123
124 // check if at least one word was pushed on sux_state 124 // check if at least one word was pushed on sux_state
125 // inlining depths must match 125 // inlining depths must match
126 ValueStack* if_state = if_->state(); 126 ValueStack* if_state = if_->state();
127 ValueStack* sux_state = sux->state(); 127 ValueStack* sux_state = sux->state();
128 while (sux_state->scope() != if_state->scope()) { 128 if (if_state->scope()->level() > sux_state->scope()->level()) {
129 if_state = if_state->caller_state(); 129 while (sux_state->scope() != if_state->scope()) {
130 assert(if_state != NULL, "states do not match up"); 130 if_state = if_state->caller_state();
131 assert(if_state != NULL, "states do not match up");
132 }
133 } else if (if_state->scope()->level() < sux_state->scope()->level()) {
134 while (sux_state->scope() != if_state->scope()) {
135 sux_state = sux_state->caller_state();
136 assert(sux_state != NULL, "states do not match up");
137 }
131 } 138 }
132 139
133 if (sux_state->stack_size() <= if_state->stack_size()) return; 140 if (sux_state->stack_size() <= if_state->stack_size()) return;
134 141
135 // check if phi function is present at end of successor stack and that 142 // check if phi function is present at end of successor stack and that