summaryrefslogtreecommitdiffstats
path: root/libjava/java/util/logging/natLogger.cc
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-21 18:19:01 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-02-21 18:19:01 +0000
commit1d4cd899f8027423b03169728906293d896ae721 (patch)
tree57ba42b93a03c563ee94becf0073ad2559944c33 /libjava/java/util/logging/natLogger.cc
parentf4e95b09184d087d1c2635cb29e8d942e5efc1ea (diff)
downloadppe42-gcc-1d4cd899f8027423b03169728906293d896ae721.tar.gz
ppe42-gcc-1d4cd899f8027423b03169728906293d896ae721.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95338 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/util/logging/natLogger.cc')
-rw-r--r--libjava/java/util/logging/natLogger.cc55
1 files changed, 55 insertions, 0 deletions
diff --git a/libjava/java/util/logging/natLogger.cc b/libjava/java/util/logging/natLogger.cc
new file mode 100644
index 00000000000..15d1ab70efd
--- /dev/null
+++ b/libjava/java/util/logging/natLogger.cc
@@ -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;
+}
OpenPOWER on IntegriCloud