[RFA] Update PC values for JVMTI stack tracing code
Tom Tromey
tromey@redhat.com
Fri Apr 20 17:20:00 GMT 2007
>>>>> "Kyle" == Kyle Galloway <kgallowa@redhat.com> writes:
Kyle> Since the PC values stored in _Jv_InterpFrame are only updated
Kyle> when an exception can be thrown, it is possible that the
Kyle> location value obtained when getting a stack trace can be
Kyle> incorrect. Since threads can be suspended any time through
Kyle> ThreadReference.Suspend, it is necessary that the stack tracing
Kyle> code have access to the value of the PC in the interpreter at
Kyle> all times. This patch pins the PC with a pointer in
Kyle> _Jv_InterpFrame when debugging, and provides a method to
Kyle> retrieve the PC value for use in stack tracing code. This
Kyle> corrects a problem with eclipse not updating the source line
Kyle> display properly as well.
This looks pretty good but I have a comment & a related question.
Kyle> + // If the pc is NULL, either we are not debugging, or the method has not
Kyle> + // started.
I understand the "not debugging" case but not the other case. In the
debug mode I think pc_ptr will always be non-null. And, in this case,
if *pc_ptr can be read after the frame is pushed but before the method
starts executing, then it can hold garbage. That happens because...
Kyle> + pc_t pc;
.. there is no initialization of this local. Shouldn't it be
initialized to NULL?
Tom
More information about the Java-patches
mailing list