aboutsummaryrefslogtreecommitdiff
path: root/libjava/no-threads.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2001-10-10 22:25:43 +0000
committerTom Tromey <tromey@gcc.gnu.org>2001-10-10 22:25:43 +0000
commiteeedeb5a179c0c4a378bc14d5bebfcfc4dfcf354 (patch)
tree6facc0ca8bcfaba4b6989fa00c24d85c2c5d0aa0 /libjava/no-threads.cc
parenta8fee9482f156705563bc70af58254b3d8a1292d (diff)
downloadgcc-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/no-threads.cc')
-rw-r--r--libjava/no-threads.cc15
1 files changed, 7 insertions, 8 deletions
diff --git a/libjava/no-threads.cc b/libjava/no-threads.cc
index dc98243..4153dcd 100644
--- a/libjava/no-threads.cc
+++ b/libjava/no-threads.cc
@@ -1,6 +1,6 @@
// no-thread.cc - Implementation of `no threads' threads.
-/* Copyright (C) 1998, 1999 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2001 Free Software Foundation
This file is part of libgcj.
@@ -13,22 +13,21 @@ details. */
#include <gcj/cni.h>
#include <jvm.h>
#include <java/lang/Thread.h>
+#include <java/lang/InternalError.h>
java::lang::Thread *_Jv_OnlyThread = NULL;
_Jv_Thread_t *
-_Jv_ThreadInitData (java::lang::Thread * thread)
+_Jv_ThreadInitData (java::lang::Thread *thread)
{
- // Don't use JvAssert, since we want this to fail even when compiled
- // without assertions.
- if (_Jv_OnlyThread)
- JvFail ("only thread already running");
- _Jv_OnlyThread = thread;
+ // It is ok to create a new Thread object, as long as it isn't started.
+ if (_Jv_OnlyThread == NULL)
+ _Jv_OnlyThread = thread;
return NULL;
}
void
_Jv_ThreadStart (java::lang::Thread *, _Jv_Thread_t *, _Jv_ThreadStartFunc *)
{
- JvFail ("Thread.start called but threads not available");
+ throw new java::lang::InternalError (JvNewStringLatin1 ("Thread.start called but threads not available"));
}