Mercurial > hg > truffle
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); |