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/no-threads.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/no-threads.cc')
-rw-r--r-- | libjava/no-threads.cc | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/libjava/no-threads.cc b/libjava/no-threads.cc index dc982430629..4153dcd04de 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")); } |