From 7700695408dbf593192b4bd3f2aae5fabfa1c968 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 30 Dec 2016 13:18:07 +0100 Subject: [PATCH] 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 --- .../org/opendaylight/yangtools/triemap/FailedNode.java | 2 +- .../org/opendaylight/yangtools/triemap/MainNode.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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); -- 2.36.6