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

Comparing jsr166/src/main/java/util/concurrent/Exchanger.java (file contents):
Revision 1.69 by jsr166, Sun Jan 4 01:17:26 2015 UTC vs.
Revision 1.70 by jsr166, Sun Jan 4 09:15:11 2015 UTC

# Line 596 | Line 596 | public class Exchanger<V> {
596      }
597  
598      // Unsafe mechanics
599 <    private static final sun.misc.Unsafe U;
599 >    private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
600      private static final long BOUND;
601      private static final long SLOT;
602      private static final long MATCH;
# Line 604 | Line 604 | public class Exchanger<V> {
604      private static final int ABASE;
605      static {
606          try {
607            U = sun.misc.Unsafe.getUnsafe();
608            Class<?> ek = Exchanger.class;
609            Class<?> nk = Node.class;
610            Class<?> ak = Node[].class;
611            Class<?> tk = Thread.class;
607              BOUND = U.objectFieldOffset
608 <                (ek.getDeclaredField("bound"));
608 >                (Exchanger.class.getDeclaredField("bound"));
609              SLOT = U.objectFieldOffset
610 <                (ek.getDeclaredField("slot"));
610 >                (Exchanger.class.getDeclaredField("slot"));
611 >
612              MATCH = U.objectFieldOffset
613 <                (nk.getDeclaredField("match"));
613 >                (Node.class.getDeclaredField("match"));
614 >
615              BLOCKER = U.objectFieldOffset
616 <                (tk.getDeclaredField("parkBlocker"));
617 <            int scale = U.arrayIndexScale(ak);
616 >                (Thread.class.getDeclaredField("parkBlocker"));
617 >
618 >            int scale = U.arrayIndexScale(Node[].class);
619              if ((scale & (scale - 1)) != 0 || scale > (1 << ASHIFT))
620                  throw new Error("Unsupported array scale");
621              // ABASE absorbs padding in front of element 0
622 <            ABASE = U.arrayBaseOffset(ak) + (1 << ASHIFT);
622 >            ABASE = U.arrayBaseOffset(Node[].class) + (1 << ASHIFT);
623          } catch (ReflectiveOperationException e) {
624              throw new Error(e);
625          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines