From 1e3327171c9c525c8699a8ef5fd4cd7227703e8d Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sat, 15 Feb 2020 03:25:40 +0100 Subject: [PATCH] Optimize AbstractResumedStatement.buildDeclared() Optimize bytecode size of buildDeclared() by off-loading actual work to loadDeclared(). Improves inlining and improves tracing visibility -- which shows that the cache has about 90% cach hit rate. Change-Id: If09d417ab5257bf6651b94da2506695a6ced0104 JIRA: YANGTOOLS-652 Signed-off-by: Robert Varga --- .../parser/stmt/reactor/AbstractResumedStatement.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java index 978164ef72..c0cba1d29b 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java @@ -92,10 +92,11 @@ abstract class AbstractResumedStatement, E ext @Override public final D buildDeclared() { - final D existing = declaredInstance; - if (existing != null) { - return existing; - } + final D existing; + return (existing = declaredInstance) != null ? existing : loadDeclared(); + } + + private @NonNull D loadDeclared() { final ModelProcessingPhase phase = getCompletedPhase(); checkState(phase == ModelProcessingPhase.FULL_DECLARATION || phase == ModelProcessingPhase.EFFECTIVE_MODEL, "Cannot build declared instance after phase %s", phase); -- 2.36.6