Split onPhaseCompleted() 57/87757/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 14 Feb 2020 22:54:08 +0000 (23:54 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 16 Feb 2020 09:42:24 +0000 (10:42 +0100)
This is a hot method, hence we want to aid inlining as much as
possible. Profiling is also helped by separating callback logic
into a separate method.

JIRA: YANGTOOLS-652
Change-Id: I1ab80b50db131879326b3ae1de7e4746ede92071
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java

index 45d8b869eebafc9b60022c863832f0361aef6307..deb21a4e249ff3821c3381d823fdf98981bfb45b 100644 (file)
@@ -622,10 +622,12 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
         completedPhase = phase;
 
         final Collection<OnPhaseFinished> listeners = phaseListeners.get(phase);
-        if (listeners.isEmpty()) {
-            return;
+        if (!listeners.isEmpty()) {
+            runPhaseListeners(phase, listeners);
         }
+    }
 
+    private void runPhaseListeners(final ModelProcessingPhase phase, final Collection<OnPhaseFinished> listeners) {
         final Iterator<OnPhaseFinished> listener = listeners.iterator();
         while (listener.hasNext()) {
             final OnPhaseFinished next = listener.next();