comparison src/share/vm/prims/jvmtiThreadState.cpp @ 4841:af739d5ab23c

6972759: Step over not working after thrown exception and Pop Summary: reset jvmtithreadstate exception state after frame pop and forceearlyreturn processed Reviewed-by: minqi, dholmes, dlong Contributed-by: bill.pittore@oracle.com
author bpittore
date Sat, 21 Jan 2012 23:02:40 -0500
parents f95d63e2154a
children da91efe96a93
comparison
equal deleted inserted replaced
4801:4f3ce9284781 4841:af739d5ab23c
317 } 317 }
318 318
319 // clearing the flag indicates we are done with the PopFrame() dance 319 // clearing the flag indicates we are done with the PopFrame() dance
320 clr_pending_step_for_popframe(); 320 clr_pending_step_for_popframe();
321 321
322 // If exception was thrown in this frame, need to reset jvmti thread state.
323 // Single stepping may not get enabled correctly by the agent since
324 // exception state is passed in MethodExit event which may be sent at some
325 // time in the future. JDWP agent ignores MethodExit events if caused by
326 // an exception.
327 //
328 if (is_exception_detected()) {
329 clear_exception_detected();
330 }
322 // If step is pending for popframe then it may not be 331 // If step is pending for popframe then it may not be
323 // a repeat step. The new_bci and method_id is same as current_bci 332 // a repeat step. The new_bci and method_id is same as current_bci
324 // and current method_id after pop and step for recursive calls. 333 // and current method_id after pop and step for recursive calls.
325 // Force the step by clearing the last location. 334 // Force the step by clearing the last location.
326 JvmtiEnvThreadStateIterator it(this); 335 JvmtiEnvThreadStateIterator it(this);
383 392
384 // clearing the flag indicates we are done with 393 // clearing the flag indicates we are done with
385 // the ForceEarlyReturn() dance 394 // the ForceEarlyReturn() dance
386 clr_pending_step_for_earlyret(); 395 clr_pending_step_for_earlyret();
387 396
397 // If exception was thrown in this frame, need to reset jvmti thread state.
398 // Single stepping may not get enabled correctly by the agent since
399 // exception state is passed in MethodExit event which may be sent at some
400 // time in the future. JDWP agent ignores MethodExit events if caused by
401 // an exception.
402 //
403 if (is_exception_detected()) {
404 clear_exception_detected();
405 }
388 // If step is pending for earlyret then it may not be a repeat step. 406 // If step is pending for earlyret then it may not be a repeat step.
389 // The new_bci and method_id is same as current_bci and current 407 // The new_bci and method_id is same as current_bci and current
390 // method_id after earlyret and step for recursive calls. 408 // method_id after earlyret and step for recursive calls.
391 // Force the step by clearing the last location. 409 // Force the step by clearing the last location.
392 JvmtiEnvThreadStateIterator it(this); 410 JvmtiEnvThreadStateIterator it(this);