From d544e2a9235d269932219f294adbc87215ed1570 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 23 Apr 2019 11:38:33 +0200 Subject: [PATCH] Speed up DataContainerCodecPrototype.get() a bit We can use less byte code to initialize both the local handle and the cache field. Change-Id: I362d0125836c6d962c4366c03ba76ae244fc54e5 Signed-off-by: Robert Varga (cherry picked from commit d4e362b68ea1cc5785bd6a01dff25dddb1213d81) --- .../dom/codec/impl/DataContainerCodecPrototype.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java index 9fa864d825..02c9ec1ae8 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.dom.codec.impl; import com.google.common.collect.Iterables; import javax.annotation.concurrent.GuardedBy; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode.ChildAddressabilitySummary; import org.opendaylight.mdsal.binding.dom.codec.impl.NodeCodecContext.CodecContextFactory; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -45,7 +46,7 @@ final class DataContainerCodecPrototype implements NodeCon private final PathArgument yangArg; private final ChildAddressabilitySummary childAddressabilitySummary; - private volatile DataContainerCodecContext instance = null; + private volatile DataContainerCodecContext instance; @SuppressWarnings("unchecked") private DataContainerCodecPrototype(final Class cls, final PathArgument arg, final T nodeSchema, @@ -208,8 +209,7 @@ final class DataContainerCodecPrototype implements NodeCon synchronized (this) { tmp = instance; if (tmp == null) { - tmp = createInstance(); - instance = tmp; + instance = tmp = createInstance(); } } } @@ -219,7 +219,7 @@ final class DataContainerCodecPrototype implements NodeCon @GuardedBy("this") @SuppressWarnings({ "rawtypes", "unchecked" }) - private DataContainerCodecContext createInstance() { + private @NonNull DataContainerCodecContext createInstance() { // FIXME: make protected abstract if (schema instanceof ContainerSchemaNode) { return new ContainerNodeCodecContext(this); -- 2.36.6