mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-16 20:59:35 +08:00
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:
parent
886733617a
commit
84264cb69e
@ -1,3 +1,15 @@
|
||||
2004-04-09 Ranjit Mathew <rmathew@hotmail.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2004-04-01 Michael Koch <konqueror@gmx.de>
|
||||
|
||||
* java/lang/SecurityManager.java
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,6 @@
|
||||
// natNameFinder.cc - native helper methods for NameFinder.java
|
||||
|
||||
/* Copyright (C) 2002, 2003 Free Software Foundation, Inc
|
||||
/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
@ -48,6 +48,17 @@ details. */
|
||||
|
||||
#endif /* ! __USER_LABEL_PREFIX__ */
|
||||
|
||||
java::lang::StackTraceElement*
|
||||
gnu::gcj::runtime::NameFinder::newElement (java::lang::String* fileName,
|
||||
jint lineNumber,
|
||||
java::lang::String* className,
|
||||
java::lang::String* methName,
|
||||
jboolean isNative)
|
||||
{
|
||||
return new java::lang::StackTraceElement( fileName, lineNumber,
|
||||
className, methName, isNative);
|
||||
}
|
||||
|
||||
java::lang::String*
|
||||
gnu::gcj::runtime::NameFinder::getExternalLabel (java::lang::String* name)
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* java.lang.VMThrowable -- VM support methods for Throwable.
|
||||
Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -96,8 +96,7 @@ final class VMThrowable
|
||||
if (trace != null)
|
||||
{
|
||||
NameFinder nameFinder = new NameFinder();
|
||||
result = nameFinder.lookup(t, trace.stackTraceAddrs(),
|
||||
trace.length());
|
||||
result = nameFinder.lookup(t, trace);
|
||||
nameFinder.close();
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user