aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorAndrew Haley <aph@gcc.gnu.org>2002-12-03 13:50:40 +0000
committerAndrew Haley <aph@gcc.gnu.org>2002-12-03 13:50:40 +0000
commitf3f110d5d1a748bf3b8a71c30fb0e786140d82ad (patch)
treefa95fc744c64944f2888c39980f53def50f34cd9 /libjava
parent421f9e6091ca35352c825e7ec69439b3651da021 (diff)
downloadgcc-f3f110d5d1a748bf3b8a71c30fb0e786140d82ad.zip
gcc-f3f110d5d1a748bf3b8a71c30fb0e786140d82ad.tar.gz
gcc-f3f110d5d1a748bf3b8a71c30fb0e786140d82ad.tar.bz2
natClassLoader.cc (_Jv_PrepareCompiledClass): Call _Jv_PushClass.
2002-12-03 Andrew Haley <aph@redhat.com> * java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Call _Jv_PushClass. (_Jv_InitNewClassFields): Set protectionDomain and chain = NULL. (_Jv_PopClass): New. (_Jv_PushClass): New. * java/lang/natClass.cc (forName (jstring)): Use a StackTrace to discover the ClassLoader of our caller. (_Jv_CheckArrayStore): Don't check that a class is assignment compatible with Object. * java/lang/natVMTHrowable.cc: Delete. * gnu/gcj/runtime/StackTrace.java: New, partly copied from java.lang.VMThrowable. (StackTrace(), StackTrace(int)): New constructors. (classAt, methodAt, update, methodAtAddress): New methods. (map): New field. * java/lang/VMThrowable.java: Use StackTrace instead of natVMTHrowable. * java/lang/Class.h (getClassLoaderInternal): New. (class Class): Be friendly with _Jv_PopClass and _Jv_PushClass. Be friendly with gnu::gcj::runtime::StackTrace. (Object.chain): New field. * include/java-interp.h (class _Jv_InterpMethod): Be friendly with gnu::gcj::runtime::StackTrace. * prims.cc (_Jv_NewObjectArray): Use getClassLoaderInternal() instead of getClassLoader(). * verify.cc (class _Jv_BytecodeVerifier): Likewise. java::lang::VMThrowable. * Makefile.am (core_java_source_files): Add MethodRef.java, StackTrace.java. (nat_source_files): Remove natVMThrowable.cc; add natStackTrace.cc. * Makefile.in: Rebuild. From-SVN: r59770
Diffstat (limited to 'libjava')
-rw-r--r--libjava/java/lang/natVMThrowable.cc97
1 files changed, 0 insertions, 97 deletions
diff --git a/libjava/java/lang/natVMThrowable.cc b/libjava/java/lang/natVMThrowable.cc
deleted file mode 100644
index c1b030d..0000000
--- a/libjava/java/lang/natVMThrowable.cc
+++ /dev/null
@@ -1,97 +0,0 @@
-// natVMThrowable.cc - native helper methods for Throwable
-
-/* Copyright (C) 2000, 2002 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 <string.h>
-
-#include <jvm.h>
-#include <gcj/cni.h>
-#include <gnu/gcj/RawData.h>
-#include <java/lang/Object.h>
-#include <java-threads.h>
-#include <java/lang/Throwable.h>
-#include <java/lang/VMThrowable.h>
-#include <java/lang/Thread.h>
-#include <java-interp.h>
-
-#include <sys/types.h>
-
-#include <stdlib.h>
-
-#include <unistd.h>
-
-#ifdef HAVE_EXECINFO_H
-#include <execinfo.h>
-#endif
-
-/* FIXME: size of the stack trace is limited to 128 elements. It's
- undoubtedly sensible to limit the stack trace, but 128 is rather
- arbitrary. It may be better to configure this. */
-
-java::lang::VMThrowable *
-java::lang::VMThrowable::fillInStackTrace (java::lang::Throwable*)
-{
- if (! trace_enabled)
- return NULL;
-#if defined (HAVE_BACKTRACE)
- VMThrowable* state = new VMThrowable;
- void *p[128];
-
- // We subtract 1 from the number of elements because we don't want
- // to include the calls to fillInStackTrace in the trace.
- int n = backtrace (p, 128) - 1;
-
- _Jv_frame_info *addrs;
- if (n > 0)
- {
-#ifdef INTERPRETER
- extern void _Jv_StartOfInterpreter (void);
- extern void _Jv_EndOfInterpreter (void);
-
- java::lang::Thread *thread = java::lang::Thread::currentThread();
- _Jv_MethodChain *interp_frame
- = (thread ? reinterpret_cast<_Jv_MethodChain *> (thread->interp_frame)
- : NULL);
-#endif // INTERPRETER
-
- state->length = n;
- int len = n;
- addrs = (_Jv_frame_info *) _Jv_Malloc (n * sizeof (_Jv_frame_info));
- for (n = 0; n < len; n++)
- {
- addrs[n].addr = p[n];
-#ifdef INTERPRETER
- if (p[n] >= &_Jv_StartOfInterpreter && p[n] <= &_Jv_EndOfInterpreter)
- {
- addrs[n].interp = (void *) interp_frame->self;
- interp_frame = interp_frame->next;
- }
- else
- addrs[n].interp = 0;
-#endif // INTERPRETER
- }
- }
- else
- addrs = NULL;
-
- state->stackTraceAddrs = reinterpret_cast<gnu::gcj::RawData *> (addrs);
-
- return state;
-#endif
- return NULL;
-}