Skip to content

Commit b916062

Browse files
committed
Merge pull request #3109 from akarnokd/InternalUtilAtomicTests
Unit tests and cleanup of JCTools' queues.
2 parents 3fe048b + 66519c0 commit b916062

File tree

8 files changed

+428
-62
lines changed

8 files changed

+428
-62
lines changed

src/main/java/rx/internal/util/atomic/MpscLinkedAtomicQueue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public MpscLinkedAtomicQueue() {
5858
@Override
5959
public final boolean offer(final E nextValue) {
6060
if (nextValue == null) {
61-
throw new IllegalArgumentException("null elements not allowed");
61+
throw new NullPointerException("null elements not allowed");
6262
}
6363
final LinkedQueueNode<E> nextNode = new LinkedQueueNode<E>(nextValue);
6464
final LinkedQueueNode<E> prevProducerNode = xchgProducerNode(nextNode);

src/main/java/rx/internal/util/atomic/SpscLinkedAtomicQueue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public SpscLinkedAtomicQueue() {
5959
@Override
6060
public boolean offer(final E nextValue) {
6161
if (nextValue == null) {
62-
throw new IllegalArgumentException("null elements not allowed");
62+
throw new NullPointerException("null elements not allowed");
6363
}
6464
final LinkedQueueNode<E> nextNode = new LinkedQueueNode<E>(nextValue);
6565
lpProducerNode().soNext(nextNode);

src/main/java/rx/internal/util/unsafe/MpmcArrayQueue.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,7 @@ public MpmcArrayQueueL1Pad(int capacity) {
2828
}
2929

3030
abstract class MpmcArrayQueueProducerField<E> extends MpmcArrayQueueL1Pad<E> {
31-
private final static long P_INDEX_OFFSET;
32-
static {
33-
try {
34-
P_INDEX_OFFSET = UNSAFE.objectFieldOffset(MpmcArrayQueueProducerField.class
35-
.getDeclaredField("producerIndex"));
36-
} catch (NoSuchFieldException e) {
37-
throw new RuntimeException(e);
38-
}
39-
}
31+
private final static long P_INDEX_OFFSET = UnsafeAccess.addressOf(MpmcArrayQueueProducerField.class, "producerIndex");
4032
private volatile long producerIndex;
4133

4234
public MpmcArrayQueueProducerField(int capacity) {
@@ -62,15 +54,7 @@ public MpmcArrayQueueL2Pad(int capacity) {
6254
}
6355

6456
abstract class MpmcArrayQueueConsumerField<E> extends MpmcArrayQueueL2Pad<E> {
65-
private final static long C_INDEX_OFFSET;
66-
static {
67-
try {
68-
C_INDEX_OFFSET = UNSAFE.objectFieldOffset(MpmcArrayQueueConsumerField.class
69-
.getDeclaredField("consumerIndex"));
70-
} catch (NoSuchFieldException e) {
71-
throw new RuntimeException(e);
72-
}
73-
}
57+
private final static long C_INDEX_OFFSET = UnsafeAccess.addressOf(MpmcArrayQueueConsumerField.class, "consumerIndex");
7458
private volatile long consumerIndex;
7559

7660
public MpmcArrayQueueConsumerField(int capacity) {

src/main/java/rx/internal/util/unsafe/MpscLinkedQueue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ protected final LinkedQueueNode<E> xchgProducerNode(LinkedQueueNode<E> newVal) {
6969
@Override
7070
public final boolean offer(final E nextValue) {
7171
if (nextValue == null) {
72-
throw new IllegalArgumentException("null elements not allowed");
72+
throw new NullPointerException("null elements not allowed");
7373
}
7474
final LinkedQueueNode<E> nextNode = new LinkedQueueNode<E>(nextValue);
7575
final LinkedQueueNode<E> prevProducerNode = xchgProducerNode(nextNode);

src/main/java/rx/internal/util/unsafe/SpmcArrayQueue.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,7 @@ public SpmcArrayQueueL1Pad(int capacity) {
2828
}
2929

3030
abstract class SpmcArrayQueueProducerField<E> extends SpmcArrayQueueL1Pad<E> {
31-
protected final static long P_INDEX_OFFSET;
32-
static {
33-
try {
34-
P_INDEX_OFFSET =
35-
UNSAFE.objectFieldOffset(SpmcArrayQueueProducerField.class.getDeclaredField("producerIndex"));
36-
} catch (NoSuchFieldException e) {
37-
throw new RuntimeException(e);
38-
}
39-
}
31+
protected final static long P_INDEX_OFFSET = UnsafeAccess.addressOf(SpmcArrayQueueProducerField.class, "producerIndex");
4032
private volatile long producerIndex;
4133

4234
protected final long lvProducerIndex() {
@@ -62,15 +54,7 @@ public SpmcArrayQueueL2Pad(int capacity) {
6254
}
6355

6456
abstract class SpmcArrayQueueConsumerField<E> extends SpmcArrayQueueL2Pad<E> {
65-
protected final static long C_INDEX_OFFSET;
66-
static {
67-
try {
68-
C_INDEX_OFFSET =
69-
UNSAFE.objectFieldOffset(SpmcArrayQueueConsumerField.class.getDeclaredField("consumerIndex"));
70-
} catch (NoSuchFieldException e) {
71-
throw new RuntimeException(e);
72-
}
73-
}
57+
protected final static long C_INDEX_OFFSET = UnsafeAccess.addressOf(SpmcArrayQueueConsumerField.class, "consumerIndex");
7458
private volatile long consumerIndex;
7559

7660
public SpmcArrayQueueConsumerField(int capacity) {

src/main/java/rx/internal/util/unsafe/SpscArrayQueue.java

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,7 @@ public SpscArrayQueueL1Pad(int capacity) {
3636
}
3737

3838
abstract class SpscArrayQueueProducerFields<E> extends SpscArrayQueueL1Pad<E> {
39-
protected final static long P_INDEX_OFFSET;
40-
static {
41-
try {
42-
P_INDEX_OFFSET =
43-
UNSAFE.objectFieldOffset(SpscArrayQueueProducerFields.class.getDeclaredField("producerIndex"));
44-
} catch (NoSuchFieldException e) {
45-
throw new RuntimeException(e);
46-
}
47-
}
39+
protected final static long P_INDEX_OFFSET = UnsafeAccess.addressOf(SpscArrayQueueProducerFields.class, "producerIndex");
4840
protected long producerIndex;
4941
protected long producerLookAhead;
5042

@@ -64,15 +56,7 @@ public SpscArrayQueueL2Pad(int capacity) {
6456

6557
abstract class SpscArrayQueueConsumerField<E> extends SpscArrayQueueL2Pad<E> {
6658
protected long consumerIndex;
67-
protected final static long C_INDEX_OFFSET;
68-
static {
69-
try {
70-
C_INDEX_OFFSET =
71-
UNSAFE.objectFieldOffset(SpscArrayQueueConsumerField.class.getDeclaredField("consumerIndex"));
72-
} catch (NoSuchFieldException e) {
73-
throw new RuntimeException(e);
74-
}
75-
}
59+
protected final static long C_INDEX_OFFSET = UnsafeAccess.addressOf(SpscArrayQueueConsumerField.class, "consumerIndex");
7660
public SpscArrayQueueConsumerField(int capacity) {
7761
super(capacity);
7862
}
@@ -116,6 +100,9 @@ public SpscArrayQueue(final int capacity) {
116100
*/
117101
@Override
118102
public boolean offer(final E e) {
103+
if (e == null) {
104+
throw new NullPointerException("null elements not allowed");
105+
}
119106
// local load of field to avoid repeated loads after volatile reads
120107
final E[] lElementBuffer = buffer;
121108
final long index = producerIndex;

src/main/java/rx/internal/util/unsafe/SpscLinkedQueue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public SpscLinkedQueue() {
6262
@Override
6363
public boolean offer(final E nextValue) {
6464
if (nextValue == null) {
65-
throw new IllegalArgumentException("null elements not allowed");
65+
throw new NullPointerException("null elements not allowed");
6666
}
6767
final LinkedQueueNode<E> nextNode = new LinkedQueueNode<E>(nextValue);
6868
producerNode.soNext(nextNode);

0 commit comments

Comments
 (0)