quick-threads.h (_Jv_ThreadCancel): Removed.
* include/quick-threads.h (_Jv_ThreadCancel): Removed. (_Jv_ThreadDestroy): Likewise. * include/no-threads.h (_Jv_ThreadCancel): Removed. (_Jv_ThreadDestroy): Likewise. * include/posix-threads.h (struct _Jv_Thread_t): Removed `exception' field. (_Jv_ThreadCancel): Removed decl. (_Jv_ThreadDestroy): Removed. * posix-threads.cc (_Jv_ThreadCancel): Removed. (throw_cleanup): Removed. (really_start): Don't push or pop cleanup. (_Jv_ThreadInitData): Don't initialize `exception' field. * java/lang/Thread.java (stop): Officially unimplemented. * java/lang/natThread.cc (stop): Officially unimplemented. From-SVN: r30392
This commit is contained in:
parent
063174eeda
commit
16f39e241a
@ -1,3 +1,20 @@
|
||||
1999-11-04 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* include/quick-threads.h (_Jv_ThreadCancel): Removed.
|
||||
(_Jv_ThreadDestroy): Likewise.
|
||||
* include/no-threads.h (_Jv_ThreadCancel): Removed.
|
||||
(_Jv_ThreadDestroy): Likewise.
|
||||
* include/posix-threads.h (struct _Jv_Thread_t): Removed
|
||||
`exception' field.
|
||||
(_Jv_ThreadCancel): Removed decl.
|
||||
(_Jv_ThreadDestroy): Removed.
|
||||
* posix-threads.cc (_Jv_ThreadCancel): Removed.
|
||||
(throw_cleanup): Removed.
|
||||
(really_start): Don't push or pop cleanup.
|
||||
(_Jv_ThreadInitData): Don't initialize `exception' field.
|
||||
* java/lang/Thread.java (stop): Officially unimplemented.
|
||||
* java/lang/natThread.cc (stop): Officially unimplemented.
|
||||
|
||||
1999-11-02 Bryce McKinlay <bryce@albatross.co.nz>
|
||||
|
||||
* posix-threads.cc: Don't include boehm-config.h. Include gcconfig.h
|
||||
|
@ -125,19 +125,6 @@ _Jv_ThreadSetPriority (_Jv_Thread_t *, jint)
|
||||
{
|
||||
}
|
||||
|
||||
inline void
|
||||
_Jv_ThreadCancel (_Jv_Thread_t *, void *)
|
||||
{
|
||||
JvFail ("_Jv_ThreadCancel");
|
||||
}
|
||||
|
||||
// Like Cancel, but doesn't run cleanups.
|
||||
inline void
|
||||
_Jv_ThreadDestroy (_Jv_Thread_t *)
|
||||
{
|
||||
JvFail ("_Jv_ThreadDestroy");
|
||||
}
|
||||
|
||||
void _Jv_ThreadStart (java::lang::Thread *, _Jv_Thread_t *,
|
||||
_Jv_ThreadStartFunc *meth);
|
||||
|
||||
|
@ -76,9 +76,6 @@ typedef struct
|
||||
|
||||
// Actual thread id.
|
||||
pthread_t thread;
|
||||
|
||||
// Exception we want to throw when cancelled.
|
||||
void *exception;
|
||||
} _Jv_Thread_t;
|
||||
typedef void _Jv_ThreadStartFunc (java::lang::Thread *);
|
||||
|
||||
@ -268,15 +265,6 @@ _Jv_ThreadYield (void)
|
||||
|
||||
void _Jv_ThreadSetPriority (_Jv_Thread_t *data, jint prio);
|
||||
|
||||
void _Jv_ThreadCancel (_Jv_Thread_t *data, void *error);
|
||||
|
||||
// Like Cancel, but doesn't run cleanups.
|
||||
inline void
|
||||
_Jv_ThreadDestroy (_Jv_Thread_t *)
|
||||
{
|
||||
JvFail ("_Jv_ThreadDestroy");
|
||||
}
|
||||
|
||||
void _Jv_ThreadStart (java::lang::Thread *thread, _Jv_Thread_t *data,
|
||||
_Jv_ThreadStartFunc *meth);
|
||||
|
||||
|
@ -113,19 +113,6 @@ _Jv_ThreadSetPriority (_Jv_Thread_t *, jint)
|
||||
{
|
||||
}
|
||||
|
||||
inline void
|
||||
_Jv_ThreadCancel (_Jv_Thread_t *data, void *error)
|
||||
{
|
||||
coop_terminate (*data, error);
|
||||
}
|
||||
|
||||
// Like Cancel, but doesn't run cleanups.
|
||||
inline void
|
||||
_Jv_ThreadDestroy (_Jv_Thread_t *data)
|
||||
{
|
||||
coop_terminate (*data, 0);
|
||||
}
|
||||
|
||||
void _Jv_ThreadStart (java::lang::Thread *thread, _Jv_Thread_t *data,
|
||||
_Jv_ThreadStartFunc *meth);
|
||||
|
||||
|
@ -181,7 +181,9 @@ public class Thread implements Runnable
|
||||
|
||||
public final void stop ()
|
||||
{
|
||||
stop (new ThreadDeath ());
|
||||
// Argument doesn't matter, because this is no longer
|
||||
// supported.
|
||||
stop (null);
|
||||
}
|
||||
|
||||
public final synchronized native void stop (Throwable e);
|
||||
|
@ -304,12 +304,7 @@ java::lang::Thread::start (void)
|
||||
void
|
||||
java::lang::Thread::stop (java::lang::Throwable *e)
|
||||
{
|
||||
JvSynchronize sync (this);
|
||||
checkAccess ();
|
||||
if (! e)
|
||||
_Jv_Throw (new NullPointerException);
|
||||
natThread *nt = (natThread *) data;
|
||||
_Jv_ThreadCancel (nt->thread, e);
|
||||
JvFail ("java::lang::Thread::stop unimplemented");
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -284,7 +284,6 @@ _Jv_ThreadInitData (_Jv_Thread_t **data, java::lang::Thread *)
|
||||
_Jv_Thread_t *info = new _Jv_Thread_t;
|
||||
|
||||
info->flags = 0;
|
||||
info->exception = NULL;
|
||||
|
||||
// FIXME register a finalizer for INFO here.
|
||||
// FIXME also must mark INFO somehow.
|
||||
@ -304,26 +303,6 @@ _Jv_ThreadSetPriority (_Jv_Thread_t *data, jint prio)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// This is called as a cleanup handler when a thread is exiting. We
|
||||
// use it to throw the requested exception. It's entirely possible
|
||||
// that this approach is doomed to failure, in which case we'll need
|
||||
// to adopt some alternate. For instance, use a signal to implement
|
||||
// _Jv_ThreadCancel.
|
||||
static void
|
||||
throw_cleanup (void *data)
|
||||
{
|
||||
_Jv_Thread_t *td = (_Jv_Thread_t *) data;
|
||||
_Jv_Throw ((java::lang::Throwable *) td->exception);
|
||||
}
|
||||
|
||||
void
|
||||
_Jv_ThreadCancel (_Jv_Thread_t *data, void *error)
|
||||
{
|
||||
data->exception = error;
|
||||
pthread_cancel (data->thread);
|
||||
}
|
||||
|
||||
// This function is called when a thread is started. We don't arrange
|
||||
// to call the `run' method directly, because this function must
|
||||
// return a value.
|
||||
@ -332,11 +311,9 @@ really_start (void *x)
|
||||
{
|
||||
struct starter *info = (struct starter *) x;
|
||||
|
||||
pthread_cleanup_push (throw_cleanup, info->data);
|
||||
pthread_setspecific (_Jv_ThreadKey, info->object);
|
||||
pthread_setspecific (_Jv_ThreadDataKey, info->data);
|
||||
info->method (info->object);
|
||||
pthread_cleanup_pop (0);
|
||||
|
||||
if (! (info->data->flags & FLAG_DAEMON))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user