hotspot/src/share/vm/c1/c1_Optimizer.cpp
changeset 11432 c731e8d846ce
parent 11425 fd1547049bec
child 11886 feebf5c9f40c
--- a/hotspot/src/share/vm/c1/c1_Optimizer.cpp	Tue Dec 20 16:56:50 2011 +0100
+++ b/hotspot/src/share/vm/c1/c1_Optimizer.cpp	Thu Dec 22 10:55:53 2011 +0100
@@ -125,9 +125,16 @@
   // inlining depths must match
   ValueStack* if_state = if_->state();
   ValueStack* sux_state = sux->state();
-  while (sux_state->scope() != if_state->scope()) {
-    if_state = if_state->caller_state();
-    assert(if_state != NULL, "states do not match up");
+  if (if_state->scope()->level() > sux_state->scope()->level()) {
+    while (sux_state->scope() != if_state->scope()) {
+      if_state = if_state->caller_state();
+      assert(if_state != NULL, "states do not match up");
+    }
+  } else if (if_state->scope()->level() < sux_state->scope()->level()) {
+    while (sux_state->scope() != if_state->scope()) {
+      sux_state = sux_state->caller_state();
+      assert(sux_state != NULL, "states do not match up");
+    }
   }
 
   if (sux_state->stack_size() <= if_state->stack_size()) return;