summaryrefslogtreecommitdiff
path: root/libjava/prims.cc
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-10 22:25:43 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-10 22:25:43 +0000
commit37df08c13a4234e69f72c71c80d523bb9d76d21c (patch)
tree6facc0ca8bcfaba4b6989fa00c24d85c2c5d0aa0 /libjava/prims.cc
parent9d1b6043f2683567085474587ae8d2954efa977d (diff)
downloadgcc-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.cc19
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;
}