changeset 923:dde3fe2e8164

Merge
author kevinw
date Wed, 25 Feb 2009 14:32:01 +0000
parents f9c187839d72 266358f13a6f
children 2fb53eb9df14
files
diffstat 2 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java	Tue Feb 24 19:03:58 2009 +0000
+++ b/src/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java	Wed Feb 25 14:32:01 2009 +0000
@@ -1222,8 +1222,10 @@
         // The correctness of this depends on head being initialized
         // before tail and on head.next being accurate if the current
         // thread is first in queue.
-        Node h, s;
-        return (h = head) != tail &&
+        Node t = tail; // Read fields in reverse initialization order
+        Node h = head;
+        Node s;
+        return h != t &&
             ((s = h.next) == null || s.thread != Thread.currentThread());
     }
 
--- a/src/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java	Tue Feb 24 19:03:58 2009 +0000
+++ b/src/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java	Wed Feb 25 14:32:01 2009 +0000
@@ -1445,8 +1445,10 @@
         // The correctness of this depends on head being initialized
         // before tail and on head.next being accurate if the current
         // thread is first in queue.
-        Node h, s;
-        return (h = head) != tail &&
+        Node t = tail; // Read fields in reverse initialization order
+        Node h = head;
+        Node s;
+        return h != t &&
             ((s = h.next) == null || s.thread != Thread.currentThread());
     }