PatchSet 5236 Date: 2004/10/01 15:02:27 Author: guilhem Branch: HEAD Tag: (none) Log: KSem destruction fix.
2004-09-29 Guilhem Lavaux <[EMAIL PROTECTED]> * kaffe/kaffevm/thread.c, kaffe/kaffevm/thread.h (unlinkNativeAndJavaThread): Renamed to KaffeVM_unlinkNativeAndJavaThread. 2004-09-29 Noa Resare <[EMAIL PROTECTED]> * kaffe/kaffevm/thread.h, kaffe/kaffevm/thread.c, kaffe/kaffevm/systems/unix-pthreads/thread-impl.c, kaffe/kaffevm/systems/unix-jthreads/jthread.c: Delay ksem destruction until after lockStaticMutex invocations Members: ChangeLog:1.2790->1.2791 kaffe/kaffevm/thread.c:1.73->1.74 kaffe/kaffevm/thread.h:1.21->1.22 kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.121->1.122 kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.42->1.43 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.2790 kaffe/ChangeLog:1.2791 --- kaffe/ChangeLog:1.2790 Wed Sep 29 19:35:38 2004 +++ kaffe/ChangeLog Fri Oct 1 15:02:27 2004 @@ -1,5 +1,19 @@ 2004-09-29 Guilhem Lavaux <[EMAIL PROTECTED]> + * kaffe/kaffevm/thread.c, kaffe/kaffevm/thread.h + (unlinkNativeAndJavaThread): Renamed to + KaffeVM_unlinkNativeAndJavaThread. + +2004-09-29 Noa Resare <[EMAIL PROTECTED]> + + * kaffe/kaffevm/thread.h, + kaffe/kaffevm/thread.c, + kaffe/kaffevm/systems/unix-pthreads/thread-impl.c, + kaffe/kaffevm/systems/unix-jthreads/jthread.c: + Delay ksem destruction until after lockStaticMutex invocations + +2004-09-29 Guilhem Lavaux <[EMAIL PROTECTED]> + * kaffe/kaffe/main.c (main): Added a call to MAIN_MD if available. Index: kaffe/kaffe/kaffevm/thread.c diff -u kaffe/kaffe/kaffevm/thread.c:1.73 kaffe/kaffe/kaffevm/thread.c:1.74 --- kaffe/kaffe/kaffevm/thread.c:1.73 Mon Sep 20 15:48:45 2004 +++ kaffe/kaffe/kaffevm/thread.c Fri Oct 1 15:02:30 2004 @@ -101,9 +101,14 @@ thread_data->needOnStack = STACK_HIGH; } -static void -unlinkNativeAndJavaThread(jthread_t thread) +/* + * Destroys current thread's heavy lock and resets jniEnv. Called from + * the threading implementation before a thread is destroyed or reused. + */ +void +KaffeVM_unlinkNativeAndJavaThread() { + jthread_t thread = jthread_current(); threadData *thread_data = jthread_get_data(thread); thread_data->jniEnv = 0; @@ -460,10 +465,14 @@ } #endif - /* Destroy this thread's heavy lock */ - unlinkNativeAndJavaThread(jthread_current()); - - /* This never returns */ + /* + * This may never return. If it does return, control is returned to + * the threading implementation where firstStartThread() is called. + * + * The threading implementation is responsible for calling + * KaffeVM_unlinkNativeAndJavaThread() before killing or + * reusing the thread. + */ jthread_exit(); } Index: kaffe/kaffe/kaffevm/thread.h diff -u kaffe/kaffe/kaffevm/thread.h:1.21 kaffe/kaffe/kaffevm/thread.h:1.22 --- kaffe/kaffe/kaffevm/thread.h:1.21 Thu Jul 29 14:24:50 2004 +++ kaffe/kaffe/kaffevm/thread.h Fri Oct 1 15:02:30 2004 @@ -42,6 +42,7 @@ void finalizeThread(Hjava_lang_VMThread*); char* nameThread(Hjava_lang_VMThread*); char* nameNativeThread(void*); +void KaffeVM_unlinkNativeAndJavaThread(void); Index: kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c diff -u kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.121 kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.122 --- kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.121 Sun Sep 5 12:49:55 2004 +++ kaffe/kaffe/kaffevm/systems/unix-jthreads/jthread.c Fri Oct 1 15:02:31 2004 @@ -1895,6 +1895,7 @@ if (currentJThread->daemon) { tdaemon--; } + KaffeVM_unlinkNativeAndJavaThread(); assert(!(currentJThread->flags & THREAD_FLAGS_EXITING)); currentJThread->flags |= THREAD_FLAGS_EXITING; Index: kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c diff -u kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.42 kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.43 --- kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.42 Mon Sep 20 16:25:28 2004 +++ kaffe/kaffe/kaffevm/systems/unix-pthreads/thread-impl.c Fri Oct 1 15:02:31 2004 @@ -707,6 +707,9 @@ TUNLOCK( cur); /* ---------------------------------------------------- tLock */ + /* we are done using locks now. ok to destroy ksem */ + KaffeVM_unlinkNativeAndJavaThread(); + if ( nCached >= MAX_CACHED_THREADS ){ break; } _______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe