comparison src/share/vm/runtime/vframeArray.cpp @ 4678:a03f3fd16b22

Fix reexecute boolean in HotSpot debug information. Introduce "duringCall" flag in FrameState that indicates that the bci of the frame state denotes an invoke that should *not* be reexecuted.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 23 Feb 2012 21:43:59 +0100
parents 3dbcd1013cc8
children 07bcee8b70a4
comparison
equal deleted inserted replaced
4677:74c0b866fe8d 4678:a03f3fd16b22
128 // Now the expressions off-stack 128 // Now the expressions off-stack
129 // Same silliness as above 129 // Same silliness as above
130 bool rethrow_exception = vf->scope()->rethrow_exception(); 130 bool rethrow_exception = vf->scope()->rethrow_exception();
131 if (rethrow_exception) { 131 if (rethrow_exception) {
132 // (tw) Make sure there are only null pointers on the stack, because the stack values do not correspond to the GC map at the bytecode at which the exception is rethrown. 132 // (tw) Make sure there are only null pointers on the stack, because the stack values do not correspond to the GC map at the bytecode at which the exception is rethrown.
133 // TODO: Fix this! Locals map might be wrong too.
133 _expressions = new StackValueCollection(vf->method()->max_stack()); 134 _expressions = new StackValueCollection(vf->method()->max_stack());
134 assert(Thread::current()->has_pending_exception(), "just checking"); 135 assert(Thread::current()->has_pending_exception(), "just checking");
135 for (int i=0; i<vf->method()->max_stack(); ++i) { 136 for (int i=0; i<vf->method()->max_stack(); ++i) {
136 _expressions->add( new StackValue()); 137 _expressions->add( new StackValue());
137 } 138 }
259 // in interpreterRuntime.cpp. 260 // in interpreterRuntime.cpp.
260 break; 261 break;
261 case Deoptimization::Unpack_uncommon_trap: 262 case Deoptimization::Unpack_uncommon_trap:
262 case Deoptimization::Unpack_reexecute: 263 case Deoptimization::Unpack_reexecute:
263 // redo last byte code 264 // redo last byte code
265 assert(should_reexecute(), "");
264 pc = Interpreter::deopt_entry(vtos, 0); 266 pc = Interpreter::deopt_entry(vtos, 0);
265 use_next_mdp = false; 267 use_next_mdp = false;
266 break; 268 break;
267 default: 269 default:
268 ShouldNotReachHere(); 270 ShouldNotReachHere();