diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-10 22:25:43 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-10 22:25:43 +0000 |
commit | 37df08c13a4234e69f72c71c80d523bb9d76d21c (patch) | |
tree | 6facc0ca8bcfaba4b6989fa00c24d85c2c5d0aa0 /libjava/prims.cc | |
parent | 9d1b6043f2683567085474587ae8d2954efa977d (diff) | |
download | gcc-37df08c13a4234e69f72c71c80d523bb9d76d21c.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46163 138bc75d-0d04-0410-961f-82ee72b054a4
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 9b4ac240df9..7205e1f6bfc 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; } |