Makefile.in: Rebuilt.
2005-02-21 Andrew Haley <aph@redhat.com> * Makefile.in: Rebuilt. * Makefile.am (nat_source_files): Added natLogger.cc. * java/util/logging/natLogger.cc: New file. * java/util/logging/Logger.java (getCallerStackFrame): Now native. From-SVN: r95338
This commit is contained in:
parent
d0a68934cf
commit
92c91cf7fe
5 changed files with 96 additions and 36 deletions
|
@ -1,5 +1,5 @@
|
|||
/* Logger.java -- a class for logging messages
|
||||
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -1169,17 +1169,5 @@ public class Logger
|
|||
* That should be the initial caller of a logging method.
|
||||
* @return caller of the initial looging method
|
||||
*/
|
||||
private StackTraceElement getCallerStackFrame()
|
||||
{
|
||||
Throwable t = new Throwable();
|
||||
StackTraceElement[] stackTrace = t.getStackTrace();
|
||||
int index = 0;
|
||||
// skip to stackentries until this class
|
||||
while(!stackTrace[index].getClassName().equals(getClass().getName())){index++;}
|
||||
// skip the stackentries of this class
|
||||
while(stackTrace[index].getClassName().equals(getClass().getName())){index++;}
|
||||
|
||||
return stackTrace[index];
|
||||
}
|
||||
|
||||
private native StackTraceElement getCallerStackFrame();
|
||||
}
|
||||
|
|
55
libjava/java/util/logging/natLogger.cc
Normal file
55
libjava/java/util/logging/natLogger.cc
Normal file
|
@ -0,0 +1,55 @@
|
|||
// natLogger.cc - Native part of Logger class.
|
||||
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation
|
||||
|
||||
This Logger is part of libgcj.
|
||||
|
||||
This software is copyrighted work licensed under the terms of the
|
||||
Libgcj License. Please consult the Logger "LIBGCJ_LICENSE" for
|
||||
details. */
|
||||
|
||||
#include <config.h>
|
||||
#include <platform.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#pragma implementation "Logger.h"
|
||||
|
||||
#include <gcj/cni.h>
|
||||
#include <jvm.h>
|
||||
|
||||
|
||||
#include <java/lang/Object.h>
|
||||
#include <java/lang/Class.h>
|
||||
#include <java/util/logging/Logger.h>
|
||||
#include <java/lang/StackTraceElement.h>
|
||||
#include <java/lang/ArrayIndexOutOfBoundsException.h>
|
||||
|
||||
java::lang::StackTraceElement*
|
||||
java::util::logging::Logger::getCallerStackFrame ()
|
||||
{
|
||||
gnu::gcj::runtime::StackTrace *t
|
||||
= new gnu::gcj::runtime::StackTrace(4);
|
||||
java::lang::Class *klass = NULL;
|
||||
int i = 2;
|
||||
try
|
||||
{
|
||||
// skip until this class
|
||||
while ((klass = t->classAt (i)) != getClass())
|
||||
i++;
|
||||
// skip the stackentries of this class
|
||||
while ((klass = t->classAt (i)) == getClass() || klass == NULL)
|
||||
i++;
|
||||
}
|
||||
catch (::java::lang::ArrayIndexOutOfBoundsException *e)
|
||||
{
|
||||
// FIXME: RuntimeError
|
||||
}
|
||||
|
||||
java::lang::StackTraceElement *e
|
||||
= new java::lang::StackTraceElement
|
||||
(JvNewStringUTF (""), 0,
|
||||
klass->getName(), t->methodAt(i), false);
|
||||
|
||||
return e;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue