// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_gcj_runtime_StackTrace__
#define __gnu_gcj_runtime_StackTrace__

#pragma interface

#include <java/lang/Object.h>

extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
      namespace runtime
      {
        class StackTrace;
        class MethodRef;
      }
      class RawData;
    }
  }
}

class gnu::gcj::runtime::StackTrace : public ::java::lang::Object
{
public:
  StackTrace (jint);
  StackTrace ();
  ::java::lang::Class *classAt (jint);
  ::java::lang::String *methodAt (jint);
  jint length () { return len; }
  static ::java::lang::Class *getClass (::gnu::gcj::RawData *);
private:
  static void update ();
  static ::gnu::gcj::runtime::MethodRef *methodAtAddress (::gnu::gcj::RawData *);
public: // actually package-private
  ::gnu::gcj::RawData *stackTraceAddrs () { return addrs; }
private:
  void fillInStackTrace (jint, jint);
public:  // actually protected
  void finalize ();
private:
  static ::gnu::gcj::runtime::MethodRef *getCompiledMethodRef (::gnu::gcj::RawData *);
  static ::java::util::IdentityHashMap *map;
  ::gnu::gcj::RawData * __attribute__((aligned(__alignof__( ::java::lang::Object )))) addrs;
  jint len;
public:

  static ::java::lang::Class class$;
};

#endif /* __gnu_gcj_runtime_StackTrace__ */
