From: Robert Varga Date: Fri, 30 Dec 2016 12:18:07 +0000 (+0100) Subject: BUG-7464: Expose MainNode(prev) constructor X-Git-Tag: release/carbon~169 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;ds=sidebyside;h=7700695408dbf593192b4bd3f2aae5fabfa1c968;p=yangtools.git BUG-7464: Expose MainNode(prev) constructor 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 --- diff --git a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/FailedNode.java b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/FailedNode.java index a766c251d5..74185053dd 100644 --- a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/FailedNode.java +++ b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/FailedNode.java @@ -19,8 +19,8 @@ final class FailedNode extends MainNode { private final MainNode p; FailedNode(final MainNode p) { + super(p); this.p = p; - WRITE_PREV(p); } @Override diff --git a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/MainNode.java b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/MainNode.java index dca11eeeb5..fcc747160f 100644 --- a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/MainNode.java +++ b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/MainNode.java @@ -22,7 +22,15 @@ abstract class MainNode extends BasicNode { private static final AtomicReferenceFieldUpdater PREV_UPDATER = AtomicReferenceFieldUpdater.newUpdater(MainNode.class, MainNode.class, "prev"); - private volatile MainNode prev = null; + private volatile MainNode prev; + + MainNode() { + this.prev = null; + } + + MainNode(final MainNode prev) { + this.prev = prev; + } abstract int cachedSize(TrieMap ct);