From 093331571e4344e17d62c43b931617e6c5ad2a0b Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sun, 12 Dec 2021 09:46:45 +0100 Subject: [PATCH] Cache CopyType.values() We are on critical path accessing values, which end up being cloned by the implementation. Let's amortize that by remembering the array. Change-Id: I7f74085dc329f39b0a59bdaa4fab7e32ed57ddff Signed-off-by: Robert Varga --- .../yang/parser/stmt/reactor/StatementContextBase.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index 3e9405d829..2e67e62634 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -106,8 +106,10 @@ public abstract class StatementContextBase, E // Top four bits, of which we define the topmost two to 0. We use the bottom two to encode last CopyType, aight? private static final int COPY_CHILD_TYPE_SHIFT = 4; + private static final CopyType @NonNull [] COPY_TYPE_VALUES = CopyType.values(); + static { - final int copyTypes = CopyType.values().length; + final int copyTypes = COPY_TYPE_VALUES.length; // This implies CopyType.ordinal() is <= COPY_TYPE_MASK verify(copyTypes == COPY_LAST_TYPE_MASK + 1, "Unexpected %s CopyType values", copyTypes); } @@ -231,12 +233,12 @@ public abstract class StatementContextBase, E @Override public final CopyType getLastOperation() { - return CopyType.values()[bitsAight & COPY_LAST_TYPE_MASK]; + return COPY_TYPE_VALUES[bitsAight & COPY_LAST_TYPE_MASK]; } // This method exists only for space optimization of InferredStatementContext final CopyType childCopyType() { - return CopyType.values()[bitsAight >> COPY_CHILD_TYPE_SHIFT & COPY_LAST_TYPE_MASK]; + return COPY_TYPE_VALUES[bitsAight >> COPY_CHILD_TYPE_SHIFT & COPY_LAST_TYPE_MASK]; } // -- 2.36.6