--- jsr166/src/jsr166y/ForkJoinWorkerThread.java 2009/08/06 15:13:54 1.29 +++ jsr166/src/jsr166y/ForkJoinWorkerThread.java 2009/10/06 19:02:48 1.30 @@ -415,13 +415,17 @@ public class ForkJoinWorkerThread extend // Intrinsics-based support for queue operations. + private static long slotOffset(int i) { + return ((long) i << qShift) + qBase; + } + /** * Adds in store-order the given task at given slot of q to null. * Caller must ensure q is non-null and index is in range. */ private static void setSlot(ForkJoinTask[] q, int i, ForkJoinTask t) { - UNSAFE.putOrderedObject(q, (i << qShift) + qBase, t); + UNSAFE.putOrderedObject(q, slotOffset(i), t); } /** @@ -430,7 +434,7 @@ public class ForkJoinWorkerThread extend */ private static boolean casSlotNull(ForkJoinTask[] q, int i, ForkJoinTask t) { - return UNSAFE.compareAndSwapObject(q, (i << qShift) + qBase, t, null); + return UNSAFE.compareAndSwapObject(q, slotOffset(i), t, null); } /**