VMThrowable.java (getStackTrace): Pass trace as-is to modified lookup().
* java/lang/VMThrowable.java (getStackTrace): Pass trace as-is to modified lookup(). * gnu/gcj/runtime/NameFinder.java (lookup): Change to take in a StackTraceElement directly. (newElement): New native helper method to create StackTraceElement bypassing Java access control. (createStackTraceElement): Use newElement() instead of directly calling StackTraceElement's constructor. * gnu/gcj/runtime/natNameFinder.cc (newElement): New method. From-SVN: r80541
This commit is contained in:
committed by
Ranjit Mathew
parent
886733617a
commit
84264cb69e
@@ -1,5 +1,5 @@
|
||||
/* NameFinder.java -- Translates addresses to StackTraceElements.
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
@@ -241,8 +241,11 @@ public class NameFinder
|
||||
* Given an Throwable and a native stacktrace returns an array of
|
||||
* StackTraceElement containing class, method, file and linenumbers.
|
||||
*/
|
||||
public StackTraceElement[] lookup(Throwable t, RawData addrs, int length)
|
||||
public StackTraceElement[] lookup(Throwable t, StackTrace trace)
|
||||
{
|
||||
RawData addrs = trace.stackTraceAddrs();
|
||||
int length = trace.length();
|
||||
|
||||
StackTraceElement[] elements = new StackTraceElement[length];
|
||||
for (int i=0; i < length; i++)
|
||||
elements[i] = lookup(addrs, i);
|
||||
@@ -352,6 +355,16 @@ public class NameFinder
|
||||
return stack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Native helper method to create a StackTraceElement. Needed to work
|
||||
* around normal Java access restrictions.
|
||||
*/
|
||||
native private StackTraceElement newElement(String fileName,
|
||||
int lineNumber,
|
||||
String className,
|
||||
String methName,
|
||||
boolean isNative);
|
||||
|
||||
/**
|
||||
* Creates a StackTraceElement given a string and a filename.
|
||||
* Splits the given string into the class and method part.
|
||||
@@ -363,7 +376,7 @@ public class NameFinder
|
||||
private StackTraceElement createStackTraceElement(String name, String file)
|
||||
{
|
||||
if (!demangle)
|
||||
return new StackTraceElement(file, -1, null, name, false);
|
||||
return newElement(file, -1, null, name, false);
|
||||
|
||||
String s = demangleName(name);
|
||||
String methodName = s;
|
||||
@@ -409,7 +422,7 @@ public class NameFinder
|
||||
}
|
||||
}
|
||||
|
||||
return new StackTraceElement(fileName, line, className, methodName, false);
|
||||
return newElement(fileName, line, className, methodName, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user