1.1 --- a/src/share/vm/opto/callnode.cpp Fri Jul 31 12:04:07 2009 -0700 1.2 +++ b/src/share/vm/opto/callnode.cpp Fri Jul 31 17:12:33 2009 -0700 1.3 @@ -223,6 +223,7 @@ 1.4 JVMState::JVMState(ciMethod* method, JVMState* caller) { 1.5 assert(method != NULL, "must be valid call site"); 1.6 _method = method; 1.7 + _reexecute = Reexecute_Undefined; 1.8 debug_only(_bci = -99); // random garbage value 1.9 debug_only(_map = (SafePointNode*)-1); 1.10 _caller = caller; 1.11 @@ -237,6 +238,7 @@ 1.12 JVMState::JVMState(int stack_size) { 1.13 _method = NULL; 1.14 _bci = InvocationEntryBci; 1.15 + _reexecute = Reexecute_Undefined; 1.16 debug_only(_map = (SafePointNode*)-1); 1.17 _caller = NULL; 1.18 _depth = 1; 1.19 @@ -269,6 +271,7 @@ 1.20 if (p->_method != q->_method) return false; 1.21 if (p->_method == NULL) return true; // bci is irrelevant 1.22 if (p->_bci != q->_bci) return false; 1.23 + if (p->_reexecute != q->_reexecute) return false; 1.24 p = p->caller(); 1.25 q = q->caller(); 1.26 if (p == q) return true; 1.27 @@ -490,6 +493,7 @@ 1.28 if (!printed) 1.29 _method->print_short_name(st); 1.30 st->print(" @ bci:%d",_bci); 1.31 + st->print(" reexecute:%s", _reexecute==Reexecute_True?"true":"false"); 1.32 } else { 1.33 st->print(" runtime stub"); 1.34 } 1.35 @@ -509,8 +513,8 @@ 1.36 } 1.37 _map->dump(2); 1.38 } 1.39 - st->print("JVMS depth=%d loc=%d stk=%d mon=%d scalar=%d end=%d mondepth=%d sp=%d bci=%d method=", 1.40 - depth(), locoff(), stkoff(), monoff(), scloff(), endoff(), monitor_depth(), sp(), bci()); 1.41 + st->print("JVMS depth=%d loc=%d stk=%d mon=%d scalar=%d end=%d mondepth=%d sp=%d bci=%d reexecute=%s method=", 1.42 + depth(), locoff(), stkoff(), monoff(), scloff(), endoff(), monitor_depth(), sp(), bci(), should_reexecute()?"true":"false"); 1.43 if (_method == NULL) { 1.44 st->print_cr("(none)"); 1.45 } else { 1.46 @@ -537,6 +541,7 @@ 1.47 JVMState* JVMState::clone_shallow(Compile* C) const { 1.48 JVMState* n = has_method() ? new (C) JVMState(_method, _caller) : new (C) JVMState(0); 1.49 n->set_bci(_bci); 1.50 + n->_reexecute = _reexecute; 1.51 n->set_locoff(_locoff); 1.52 n->set_stkoff(_stkoff); 1.53 n->set_monoff(_monoff);