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

Reply via email to