BUG-7464: Expose MainNode(prev) constructor 69/49869/6
authorRobert Varga <rovarga@cisco.com>
Fri, 30 Dec 2016 12:18:07 +0000 (13:18 +0100)
committerRobert Varga <rovarga@cisco.com>
Mon, 9 Jan 2017 14:17:12 +0000 (15:17 +0100)
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>
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/FailedNode.java
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/MainNode.java

index a766c251d5cf4b3ccb25ad50d501f598aa4ddef0..74185053dd1978f9b7e964023078dba4d5716c90 100644 (file)
@@ -19,8 +19,8 @@ final class FailedNode<K, V> extends MainNode<K, V> {
     private final MainNode<K, V> p;
 
     FailedNode(final MainNode<K, V> p) {
+        super(p);
         this.p = p;
-        WRITE_PREV(p);
     }
 
     @Override
index dca11eeeb5ff401048b860d367f73a01d4a140e4..fcc747160fe66c3b788cb4e85fb90b9061b63c2a 100644 (file)
@@ -22,7 +22,15 @@ abstract class MainNode<K, V> extends BasicNode {
     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);