ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/concurrent/SynchronousQueue.java
(Generate patch)

Comparing jsr166/src/main/java/util/concurrent/SynchronousQueue.java (file contents):
Revision 1.72 by jsr166, Fri Oct 22 05:18:31 2010 UTC vs.
Revision 1.73 by dl, Tue Feb 22 23:53:32 2011 UTC

# Line 250 | Line 250 | public class SynchronousQueue<E> extends
250              }
251  
252              // Unsafe mechanics
253 <            private static final sun.misc.Unsafe UNSAFE = sun.misc.Unsafe.getUnsafe();
254 <            private static final long nextOffset =
255 <                objectFieldOffset(UNSAFE, "next", SNode.class);
256 <            private static final long matchOffset =
257 <                objectFieldOffset(UNSAFE, "match", SNode.class);
258 <
253 >            private static final sun.misc.Unsafe UNSAFE;
254 >            private static final long matchOffset;
255 >            private static final long nextOffset;
256 >            
257 >            static {
258 >                try {
259 >                    UNSAFE = sun.misc.Unsafe.getUnsafe();
260 >                    Class k = SNode.class;
261 >                    matchOffset = UNSAFE.objectFieldOffset
262 >                        (k.getDeclaredField("match"));
263 >                    nextOffset = UNSAFE.objectFieldOffset
264 >                        (k.getDeclaredField("next"));
265 >                } catch (Exception e) {
266 >                    throw new Error(e);
267 >                }
268 >            }
269          }
270  
271          /** The head (top) of the stack */
# Line 469 | Line 479 | public class SynchronousQueue<E> extends
479          }
480  
481          // Unsafe mechanics
482 <        private static final sun.misc.Unsafe UNSAFE = sun.misc.Unsafe.getUnsafe();
483 <        private static final long headOffset =
484 <            objectFieldOffset(UNSAFE, "head", TransferStack.class);
485 <
482 >        private static final sun.misc.Unsafe UNSAFE;
483 >        private static final long headOffset;
484 >        static {
485 >            try {
486 >                UNSAFE = sun.misc.Unsafe.getUnsafe();
487 >                Class k = TransferStack.class;
488 >                headOffset = UNSAFE.objectFieldOffset
489 >                    (k.getDeclaredField("head"));
490 >            } catch (Exception e) {
491 >                throw new Error(e);
492 >            }
493 >        }
494      }
495  
496      /** Dual Queue */
# Line 527 | Line 545 | public class SynchronousQueue<E> extends
545              boolean isOffList() {
546                  return next == this;
547              }
548 <
548 >            
549              // Unsafe mechanics
550 <            private static final sun.misc.Unsafe UNSAFE = sun.misc.Unsafe.getUnsafe();
551 <            private static final long nextOffset =
552 <                objectFieldOffset(UNSAFE, "next", QNode.class);
553 <            private static final long itemOffset =
554 <                objectFieldOffset(UNSAFE, "item", QNode.class);
550 >            private static final sun.misc.Unsafe UNSAFE;
551 >            private static final long itemOffset;
552 >            private static final long nextOffset;
553 >            
554 >            static {
555 >                try {
556 >                    UNSAFE = sun.misc.Unsafe.getUnsafe();
557 >                    Class k = QNode.class;
558 >                    itemOffset = UNSAFE.objectFieldOffset
559 >                        (k.getDeclaredField("item"));
560 >                    nextOffset = UNSAFE.objectFieldOffset
561 >                        (k.getDeclaredField("next"));
562 >                } catch (Exception e) {
563 >                    throw new Error(e);
564 >                }
565 >            }
566          }
567  
568          /** Head of queue */
# Line 762 | Line 791 | public class SynchronousQueue<E> extends
791              }
792          }
793  
794 <        // unsafe mechanics
795 <        private static final sun.misc.Unsafe UNSAFE = sun.misc.Unsafe.getUnsafe();
796 <        private static final long headOffset =
797 <            objectFieldOffset(UNSAFE, "head", TransferQueue.class);
798 <        private static final long tailOffset =
799 <            objectFieldOffset(UNSAFE, "tail", TransferQueue.class);
800 <        private static final long cleanMeOffset =
801 <            objectFieldOffset(UNSAFE, "cleanMe", TransferQueue.class);
802 <
794 >        private static final sun.misc.Unsafe UNSAFE;
795 >        private static final long headOffset;
796 >        private static final long tailOffset;
797 >        private static final long cleanMeOffset;
798 >        static {
799 >            try {
800 >                UNSAFE = sun.misc.Unsafe.getUnsafe();
801 >                Class k = TransferQueue.class;
802 >                headOffset = UNSAFE.objectFieldOffset
803 >                    (k.getDeclaredField("head"));
804 >                tailOffset = UNSAFE.objectFieldOffset
805 >                    (k.getDeclaredField("tail"));
806 >                cleanMeOffset = UNSAFE.objectFieldOffset
807 >                    (k.getDeclaredField("cleanMe"));
808 >            } catch (Exception e) {
809 >                throw new Error(e);
810 >            }
811 >        }
812      }
813  
814      /**

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines