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 */ |
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 */ |
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 */ |
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 |
|
/** |