PatchSet 7053 
Date: 2005/12/25 20:40:28
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Locking fixes for amd64

2005-12-25  Guilhem Lavaux  <[EMAIL PROTECTED]>

        * kaffe/kaffevm/locks.c (putHeavyLock): Use atomic ops to assign 
hLockHolder
        and in_progress.

2005-12-25  Dalibor Topic  <[EMAIL PROTECTED]>

        * kaffe/kaffevm/locks.h (struct _iLock): Made holder volatile to fix 
compiler warnings.

        * kaffe/kaffevm/locks.c (locks_internal_slowUnlockMutexIfHeld, 
locks_internal_waitCond):
        Made holder volatile to fix compiler warnings.

Members: 
        ChangeLog:1.4571->1.4572 
        kaffe/kaffevm/locks.c:1.67->1.68 
        kaffe/kaffevm/locks.h:1.31->1.32 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4571 kaffe/ChangeLog:1.4572
--- kaffe/ChangeLog:1.4571      Sun Dec 25 18:10:01 2005
+++ kaffe/ChangeLog     Sun Dec 25 20:40:28 2005
@@ -1,3 +1,15 @@
+2005-12-25  Guilhem Lavaux  <[EMAIL PROTECTED]>
+
+       * kaffe/kaffevm/locks.c (putHeavyLock): Use atomic ops to assign 
hLockHolder
+       and in_progress.
+
+2005-12-25  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       * kaffe/kaffevm/locks.h (struct _iLock): Made holder volatile to fix 
compiler warnings.
+
+       * kaffe/kaffevm/locks.c (locks_internal_slowUnlockMutexIfHeld, 
locks_internal_waitCond):
+       Made holder volatile to fix compiler warnings.
+
 2005-12-25  Dalibor Topic  <[EMAIL PROTECTED]>
 
        * configure.ac: (--disable-classpath-tools) Added switch to disable 
Index: kaffe/kaffe/kaffevm/locks.c
diff -u kaffe/kaffe/kaffevm/locks.c:1.67 kaffe/kaffe/kaffevm/locks.c:1.68
--- kaffe/kaffe/kaffevm/locks.c:1.67    Sun Dec 18 10:39:55 2005
+++ kaffe/kaffe/kaffevm/locks.c Sun Dec 25 20:40:33 2005
@@ -203,8 +203,8 @@
 
   assert(lk->in_progress == 1);
   
-  lk->hlockHolder = NULL;
-  lk->in_progress = 0;
+  atomic_exchange_acq(&(lk->hlockHolder), NULL);
+  atomic_exchange_acq(&(lk->in_progress), 0);
   if (lk->num_wait != 0)
     KSEM(put)(&(lk->sem));
 }
@@ -323,7 +323,7 @@
 locks_internal_slowUnlockMutexIfHeld(iLock** lkp, iLock *heavyLock)
 {
   volatile iLock* lk;
-  void* holder;
+  volatile void* holder;
   jthread_t cur = KTHREAD(current)();
   
   DBG(SLOWLOCKS,
@@ -355,7 +355,7 @@
 locks_internal_waitCond(iLock** lkp, iLock *heavyLock, jlong timeout)
 {
   volatile iLock* lk;
-  void* holder;
+  volatile void* holder;
   jthread_t cur = KTHREAD(current)();
   volatile jthread_t *ptr;
   jboolean r;
Index: kaffe/kaffe/kaffevm/locks.h
diff -u kaffe/kaffe/kaffevm/locks.h:1.31 kaffe/kaffe/kaffevm/locks.h:1.32
--- kaffe/kaffe/kaffevm/locks.h:1.31    Sun Dec 18 10:39:55 2005
+++ kaffe/kaffe/kaffevm/locks.h Sun Dec 25 20:40:33 2005
@@ -45,14 +45,14 @@
  * unlock and for distinguishing recursive invocations).
  */
 typedef struct _iLock {
-  uintp         in_progress;
-  uintp         num_wait;
-  void*                holder;
-  jthread_t    mux;
-  jthread_t    cv;
-  Ksem          sem;
-  uint32        lockCount;
-  void*        hlockHolder;
+  uintp                in_progress;
+  uintp                num_wait;
+  volatile void*       holder;
+  jthread_t            mux;
+  jthread_t            cv;
+  Ksem                 sem;
+  uint32               lockCount;
+  void*                        hlockHolder;
 } iLock;
 
 typedef struct _iStaticLock {

_______________________________________________
kaffe mailing list
kaffe@kaffe.org
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to