From 81d64d04e01f93f03f35be783777854f58366b14 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 13 Feb 2020 17:18:29 +0100 Subject: [PATCH] Split processStatement a bit more Split out the slow path (of allocating a statement) into a separate method, so that the main entrypoint is more easily inlineable. JIRA: YANGTOOLS-652 Change-Id: Iccae60e336915e06d64731e3fe4aa278cba90996 Signed-off-by: Robert Varga --- .../parser/rfc7950/repo/StatementContextVisitor.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/StatementContextVisitor.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/StatementContextVisitor.java index 1b44c0f4ef..e2ddf346b9 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/StatementContextVisitor.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/StatementContextVisitor.java @@ -91,13 +91,18 @@ class StatementContextVisitor { return stmtDef.get(QName.create(module, localName)); } + // Normal entry point, checks for potential resume private boolean processStatement(final int myOffset, final StatementContext ctx) { final Optional optResumed = writer.resumeStatement(myOffset); if (optResumed.isPresent()) { final ResumedStatement resumed = optResumed.get(); - return resumed.isFullyDefined() || processStatement(ctx, resumed.getSourceReference()); + return resumed.isFullyDefined() || doProcessStatement(ctx, resumed.getSourceReference()); } + return processNewStatement(myOffset, ctx); + } + // Slow-path allocation of a new statement + private boolean processNewStatement(final int myOffset, final StatementContext ctx) { final String keywordTxt = verifyNotNull(ctx.getChild(KeywordContext.class, 0)).getText(); final Token start = ctx.getStart(); final StatementSourceReference ref = DeclarationInTextSource.atPosition(sourceName, start.getLine(), @@ -110,10 +115,11 @@ class StatementContextVisitor { final ArgumentContext argumentCtx = ctx.getChild(ArgumentContext.class, 0); final String argument = argumentCtx == null ? null : utils.stringFromStringContext(argumentCtx, ref); writer.startStatement(myOffset, def, argument, ref); - return processStatement(ctx, ref); + return doProcessStatement(ctx, ref); } - private boolean processStatement(final StatementContext ctx, final StatementSourceReference ref) { + // Actual processing + private boolean doProcessStatement(final StatementContext ctx, final StatementSourceReference ref) { int childOffset = 0; boolean fullyDefined = true; if (ctx.children != null) { -- 2.36.6