diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-29 17:53:28 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-08-29 17:53:28 +0000 |
| commit | 3196bed74979360646cbc8418db5c86c0527ced4 (patch) | |
| tree | 538202560a3a2f376b6fb55ee3b836b195f01e73 /libjava/gnu/gcj/runtime/NameFinder.java | |
| parent | 1153c2dcea1d760a4e4503c103995e48d5399800 (diff) | |
| download | ppe42-gcc-3196bed74979360646cbc8418db5c86c0527ced4.tar.gz ppe42-gcc-3196bed74979360646cbc8418db5c86c0527ced4.zip | |
* include/jvm.h (struct _Jv_frame_info): New structure.
* gnu/gcj/runtime/natNameFinder.cc: Include StringBuffer.h,
java-interp.h.
(lookupInterp): New method.
(getAddrAsString): Use _Jv_frame_info.
(dladdrLookup): Likewise.
* gnu/gcj/runtime/NameFinder.java (lookup): Try to look up
interpreted frame.
(lookupInterp): Declare.
* java/lang/natVMThrowable.cc: Include Thread.h, java-interp.h.
(fillInStackTrace): Collect information on interpreted frames.
Use _Jv_frame_info.
* interpret.cc: Include Thread.h.
(run): Create and push _Jv_MethodChain object.
(_Jv_EndOfInterpreter): New global.
* java/lang/Thread.java (interp_frame): New field.
* include/java-interp.h (struct _Jv_MethodChain): New structure.
Include NameFinder.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@56657 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/gcj/runtime/NameFinder.java')
| -rw-r--r-- | libjava/gnu/gcj/runtime/NameFinder.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libjava/gnu/gcj/runtime/NameFinder.java b/libjava/gnu/gcj/runtime/NameFinder.java index 60f47ac64fe..f32ebe0f530 100644 --- a/libjava/gnu/gcj/runtime/NameFinder.java +++ b/libjava/gnu/gcj/runtime/NameFinder.java @@ -173,17 +173,26 @@ public class NameFinder native private String getAddrAsString(RawData addrs, int n); /** + * If nth element of stack is an interpreted frame, return the + * element representing the method being interpreted. + */ + native private StackTraceElement lookupInterp(RawData addrs, int n); + + /** * Creates the nth StackTraceElement from the given native stacktrace. */ private StackTraceElement lookup(RawData addrs, int n) { StackTraceElement result; - result = dladdrLookup(addrs, n); + result = lookupInterp(addrs, n); + if (result == null) + result = dladdrLookup(addrs, n); if (result == null) { String name = null; String file = null; + String hex = getAddrAsString(addrs, n); if (addr2line != null) |

