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
This commit is contained in:
@@ -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"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user