From 81bbf5f1a7c88c45969f48222dee635ad5e388fb Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 15 May 2015 19:06:17 +0200 Subject: [PATCH] Do not instantiate objects for hash values While having a reference saves us from having an additional field, it will cost us an additional object overhead once it is materialized. Opt for a primitive type with a volatile guard. Change-Id: Ib3a71eb9d00555f3929d8bc104a5065d0252561e Signed-off-by: Robert Varga --- .../yang/data/api/YangInstanceIdentifier.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java index 4488ac32c2..7a7ce6c28a 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java @@ -367,11 +367,10 @@ public final class YangInstanceIdentifier implements Path HASH_UPDATER = - AtomicReferenceFieldUpdater.newUpdater(AbstractPathArgument.class, Integer.class, "hash"); private static final long serialVersionUID = -4546547994250849340L; private final QName nodeType; - private volatile transient Integer hash = null; + private transient int hashValue; + private volatile transient boolean hashGuard = false; protected AbstractPathArgument(final QName nodeType) { this.nodeType = Preconditions.checkNotNull(nodeType); @@ -393,13 +392,12 @@ public final class YangInstanceIdentifier implements Path