diff options
author | Tom Tromey <tromey@redhat.com> | 2001-10-10 22:25:43 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2001-10-10 22:25:43 +0000 |
commit | eeedeb5a179c0c4a378bc14d5bebfcfc4dfcf354 (patch) | |
tree | 6facc0ca8bcfaba4b6989fa00c24d85c2c5d0aa0 /libjava/prims.cc | |
parent | a8fee9482f156705563bc70af58254b3d8a1292d (diff) | |
download | gcc-eeedeb5a179c0c4a378bc14d5bebfcfc4dfcf354.zip gcc-eeedeb5a179c0c4a378bc14d5bebfcfc4dfcf354.tar.gz gcc-eeedeb5a179c0c4a378bc14d5bebfcfc4dfcf354.tar.bz2 |
natFinalizerThread.cc: New file.
* gnu/gcj/runtime/natFinalizerThread.cc: New file.
* java/lang/natRuntime.cc: Include FinalizerThread.h.
(runFinalization): Call finalizerReady.
* nogc.cc (_Jv_GCInitializeFinalizers): New function.
* prims.cc: Include VirtualMachineError.h, FinalizerThread.h.
(_Jv_CreateJavaVM): Start the finalizer thread.
* no-threads.cc: Include InternalError.h.
(_Jv_ThreadStart): Throw InternalError.
(_Jv_ThreadInitData): Don't throw error if this is not the first
thread.
* Makefile.in: Rebuilt.
* Makefile.am (ordinary_java_source_files): Added
FinalizerThread.java.
(nat_source_files): Added natFinalizerThread.cc.
* include/jvm.h (_Jv_GCInitializeFinalizers): Declare.
* boehm.cc (_Jv_GCInitializeFinalizers): New function.
* gnu/gcj/runtime/FirstThread.java (run): Start finalizer thread.
* gnu/gcj/runtime/FinalizerThread.java: New file.
From-SVN: r46163
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r-- | libjava/prims.cc | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc index 9b4ac24..7205e1f 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -53,7 +53,6 @@ details. */ #include <java/lang/String.h> #include <java/lang/Thread.h> #include <java/lang/ThreadGroup.h> -#include <gnu/gcj/runtime/FirstThread.h> #include <java/lang/ArrayIndexOutOfBoundsException.h> #include <java/lang/ArithmeticException.h> #include <java/lang/ClassFormatError.h> @@ -64,7 +63,10 @@ details. */ #include <java/lang/reflect/Modifier.h> #include <java/io/PrintStream.h> #include <java/lang/UnsatisfiedLinkError.h> +#include <java/lang/VirtualMachineError.h> #include <gnu/gcj/runtime/VMClassLoader.h> +#include <gnu/gcj/runtime/FinalizerThread.h> +#include <gnu/gcj/runtime/FirstThread.h> #ifdef USE_LTDL #include <ltdl.h> @@ -894,6 +896,21 @@ _Jv_CreateJavaVM (void* /*vm_args*/) _Jv_JNI_Init (); + _Jv_GCInitializeFinalizers (&::gnu::gcj::runtime::FinalizerThread::finalizerReady); + + // Start the GC finalizer thread. A VirtualMachineError can be + // thrown by the runtime if, say, threads aren't available. In this + // case finalizers simply won't run. + try + { + using namespace gnu::gcj::runtime; + FinalizerThread *ft = new FinalizerThread (); + ft->start (); + } + catch (java::lang::VirtualMachineError *ignore) + { + } + return 0; } |