FailedNode wants to initialize previous node in its constructor,
hence expose the appropriate overload, preventing another volatile
write.
Change-Id: I1f8889e91a9e7e96173863e60df76d9156e1faa5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
private final MainNode<K, V> p;
FailedNode(final MainNode<K, V> p) {
+ super(p);
this.p = p;
- WRITE_PREV(p);
}
@Override
private static final AtomicReferenceFieldUpdater<MainNode, MainNode> PREV_UPDATER =
AtomicReferenceFieldUpdater.newUpdater(MainNode.class, MainNode.class, "prev");
- private volatile MainNode<K, V> prev = null;
+ private volatile MainNode<K, V> prev;
+
+ MainNode() {
+ this.prev = null;
+ }
+
+ MainNode(final MainNode<K, V> prev) {
+ this.prev = prev;
+ }
abstract int cachedSize(TrieMap<K, V> ct);