diff options
author | Bryce McKinlay <mckinlay@redhat.com> | 2005-03-11 04:30:20 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2005-03-11 04:30:20 +0000 |
commit | c0cbd601303809da24e1ea49b711193cba4815be (patch) | |
tree | 326f8dfb57ca2a9f8fd10534252c07396695e0c0 /libjava/gnu/gcj/runtime/natStackTrace.cc | |
parent | 694d73e1659c7db09d415c8ba0ebeb441c0782a8 (diff) | |
download | gcc-c0cbd601303809da24e1ea49b711193cba4815be.zip gcc-c0cbd601303809da24e1ea49b711193cba4815be.tar.gz gcc-c0cbd601303809da24e1ea49b711193cba4815be.tar.bz2 |
exception.cc: Remove stray MethodRef.h include.
2005-03-10 Bryce McKinlay <mckinlay@redhat.com>
* exception.cc: Remove stray MethodRef.h include.
* java/lang/natClass.cc: Likewise.
* gnu/gcj/runtime/MethodRef.java: Removed.
* gnu/gcj/runtime/StackTrace.java, gnu/gcj/runtime/natNameFinder.cc,
gnu/gcj/runtime/natStackTrace.cc: Really removed.
* java/lang/natRuntime.cc (_load): Remove unsed variable.
* Makefile.am (ordinary_java_source_files): Remove MethodRef.java.
* Makefile.in: Rebuilt.
From-SVN: r96288
Diffstat (limited to 'libjava/gnu/gcj/runtime/natStackTrace.cc')
-rw-r--r-- | libjava/gnu/gcj/runtime/natStackTrace.cc | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/libjava/gnu/gcj/runtime/natStackTrace.cc b/libjava/gnu/gcj/runtime/natStackTrace.cc deleted file mode 100644 index d9f3355..0000000 --- a/libjava/gnu/gcj/runtime/natStackTrace.cc +++ /dev/null @@ -1,241 +0,0 @@ -// natStackTrace.cc - native helper methods for Throwable - -/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc - - This file is part of libgcj. - -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ - -/** - * @author Andrew Haley <aph@cygnus.com> - * @author Mark Wielaard <mark@klomp.org> - * - * Native helper methods for VM specific Throwable support. - */ - -#include <config.h> -#include <platform.h> - -#include <string.h> - -#include <jvm.h> -#include <gcj/cni.h> -#include <gnu/gcj/RawData.h> -#include <java/lang/Object.h> -#include <java-threads.h> -#include <gnu/gcj/runtime/MethodRef.h> -#include <gnu/gcj/runtime/StackTrace.h> -#include <java/lang/Thread.h> -#include <java-interp.h> -#include <java/util/IdentityHashMap.h> -#include <java/lang/ArrayIndexOutOfBoundsException.h> - -#include <sys/types.h> - -#include <stdlib.h> - -#include <unistd.h> - -#ifdef HAVE_EXECINFO_H -#include <execinfo.h> -#endif - -#include <unwind.h> - - -#ifdef INTERPRETER -extern "C" void *_Unwind_FindEnclosingFunction (void *pc) - __attribute__((pure)); -#endif // INTERPRETER - -// Fill in this stack trace with MAXLEN elements starting at offset. -void -gnu::gcj::runtime::StackTrace::fillInStackTrace (jint maxlen, jint offset) -{ -#ifdef HAVE_BACKTRACE - offset += 1; - void *_p[maxlen + offset]; - len = backtrace (_p, maxlen + offset) - offset; - void **p = _p + offset; - _Jv_frame_info *frame; - if (len > 0) - { -#ifdef INTERPRETER - extern void *const _Jv_StartOfInterpreter; - extern void * _Jv_EndOfInterpreter; - - java::lang::Thread *thread = java::lang::Thread::currentThread(); - _Jv_MethodChain *interp_frame - = (thread ? reinterpret_cast<_Jv_MethodChain *> (thread->interp_frame) - : NULL); -#endif // INTERPRETER - - frame = (_Jv_frame_info *) _Jv_Malloc (len * sizeof (_Jv_frame_info)); - for (int n = 0; n < len; n++) - { - void *pc = p[n]; - frame[n].addr = pc; - -#ifdef INTERPRETER - frame[n].interp = 0; - - // If _Jv_StartOfInterpreter is NULL either we've never - // entered the intepreter or _Unwind_FindEnclosingFunction - // is broken. - if (__builtin_expect (_Jv_StartOfInterpreter != NULL, false)) - { - // _Jv_StartOfInterpreter marks the very first - // instruction in the interpreter, but - // _Jv_EndOfInterpreter is an upper bound. If PC is - // less than _Jv_EndOfInterpreter it might be in the - // interpreter: we call _Unwind_FindEnclosingFunction to - // find out. - if (pc >= _Jv_StartOfInterpreter - && (pc < _Jv_EndOfInterpreter - || _Jv_EndOfInterpreter == NULL)) - { - if (_Unwind_FindEnclosingFunction (pc) - == _Jv_StartOfInterpreter) - { - frame[n].interp = (void *) interp_frame->self; - interp_frame = interp_frame->next; - } - else - { - // We've found an address that we know is not within - // the interpreter. We use that to refine our upper - // bound on where the interpreter ends. - _Jv_EndOfInterpreter = pc; - } - } - } -#endif // INTERPRETER - - } - } - else - frame = NULL; - - addrs = reinterpret_cast<gnu::gcj::RawData *> (frame); -#else // HAVE_BACKTRACE - (void)maxlen; - (void)offset; -#endif // HAVE_BACKTRACE -} - -/* Obtain the next power-of-2 of some integer. */ -static inline jint -nextpowerof2 (jint n) -{ - n |= (n >> 1); - n |= (n >> 2); - n |= (n >> 4); - n |= (n >> 8); - n |= (n >> 16); - return n+1; -} - -#define GET_FRAME(N) \ -({ \ - if ((N) >= len) \ - fillInStackTrace (nextpowerof2 (N), 1); \ - if ((N) < 0 || (N) >= len) \ - throw new ::java::lang::ArrayIndexOutOfBoundsException (); \ - \ - _Jv_frame_info *frame = (_Jv_frame_info *)addrs; \ - &frame[N]; \ -}) - -gnu::gcj::runtime::MethodRef * -gnu::gcj::runtime::StackTrace::getCompiledMethodRef (gnu::gcj::RawData *addr) -{ - void *p = _Unwind_FindEnclosingFunction (addr); - return gnu::gcj::runtime::StackTrace - ::methodAtAddress ((gnu::gcj::RawData *)p); -} - -java::lang::Class * -gnu::gcj::runtime::StackTrace::getClass (gnu::gcj::RawData *p) -{ - gnu::gcj::runtime::MethodRef *ref = getCompiledMethodRef (p); - if (ref) - return ref->klass; - else - return NULL; -} - -java::lang::Class * -gnu::gcj::runtime::StackTrace::classAt (jint n) -{ - _Jv_frame_info *frame = GET_FRAME (n); - -#ifdef INTERPRETER - if (frame->interp) - { - _Jv_InterpMethod *meth - = reinterpret_cast<_Jv_InterpMethod *> (frame->interp); - return meth->defining_class; - } -#endif // INTERPRETER - - return getClass ((gnu::gcj::RawData *)frame->addr); -} - -java::lang::String* -gnu::gcj::runtime::StackTrace::methodAt (jint n) -{ - _Jv_frame_info *frame = GET_FRAME (n); - _Jv_Method *meth = NULL; - -#ifdef INTERPRETER - if (frame->interp) - { - meth - = reinterpret_cast<_Jv_InterpMethod *> (frame->interp) - ->get_method(); - } -#endif // INTERPRETER - - if (! meth) - { - gnu::gcj::runtime::MethodRef *ref - = getCompiledMethodRef ((gnu::gcj::RawData *)frame->addr); - if (ref) - meth = (_Jv_Method *)ref->method; - } - - return meth - ? _Jv_NewStringUtf8Const (meth->name) - : NULL ; -} - -void -gnu::gcj::runtime::StackTrace::update(void) -{ - jclass klass; - - while ((klass = _Jv_PopClass ())) - { - for (int i=0; i<klass->method_count; i++) - { - JvSynchronize sync (map); - _Jv_Method *meth = &(klass->methods[i]); - if (meth->ncode) // i.e. if p is not abstract - { - gnu::gcj::runtime::MethodRef *ref - = new gnu::gcj::runtime::MethodRef - ((gnu::gcj::RawData *)meth, klass); - map->put ((java::lang::Object*)(meth->ncode), ref); - } - } - } -} - -void -gnu::gcj::runtime::StackTrace::finalize(void) -{ - if (addrs != NULL) - _Jv_Free (addrs); -} |