summaryrefslogtreecommitdiff
path: root/libjava/java/util/logging/natLogger.cc
blob: 5c68b1722c7b3b660e1bc4849823443dea3cecd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 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-stack.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>

using namespace java::util::logging;

java::lang::StackTraceElement* 
java::util::logging::Logger::getCallerStackFrame ()
{
  jclass klass = NULL;
  _Jv_Method *meth = NULL;
  _Jv_StackTrace::GetCallerInfo (&Logger::class$, &klass, &meth);

  jstring meth_name = NULL;
  jstring klass_name = NULL;
  if (klass != NULL)
    klass_name = klass->getName();
  if (meth != NULL)
    meth_name = _Jv_NewStringUtf8Const (meth->name);
  
  java::lang::StackTraceElement *e 
    = new java::lang::StackTraceElement
    (JvNewStringUTF (""), 0, klass_name, meth_name, false);

  return e;
}