Further optimize RevisionDateStatement implementations 68/90868/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 2 Jul 2020 12:19:35 +0000 (14:19 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 2 Jul 2020 12:23:38 +0000 (14:23 +0200)
Revision.toString() results in the raw argument string, hence we
can use that to our advantage and save a one field, dropping the
instance size to 16 bytes in typical scenarios.

JIRA: YANGTOOLS-1065
Change-Id: Id0f6c4a64be9ae70ecbe0917c19c9ac2b7aecd57
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/EmptyRevisionDateStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementSupport.java

index f9944baa80f2fce06f622741cd9a57e0febdfecd..ef5aded1c3a24ab014ce5fdec0d8209ba624edee 100644 (file)
@@ -9,11 +9,10 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.revision_date;
 
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.ArgumentToString;
 
-final class EmptyRevisionDateStatement extends WithArgument<Revision> implements RevisionDateStatement {
-    EmptyRevisionDateStatement(final StmtContext<Revision, ?, ?> context) {
-        super(context);
+final class EmptyRevisionDateStatement extends ArgumentToString<Revision> implements RevisionDateStatement {
+    EmptyRevisionDateStatement(final Revision argument) {
+        super(argument);
     }
 }
index f143bc4d450d1560f249398547a291147222609d..55d76ca7c0de8bd3a0efdd9fffb9e3a567d74222 100644 (file)
@@ -11,12 +11,11 @@ import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument.WithSubstatements;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.ArgumentToString.WithSubstatements;
 
 final class RegularRevisionDateStatement extends WithSubstatements<Revision> implements RevisionDateStatement {
-    RegularRevisionDateStatement(final StmtContext<Revision, ?, ?> context,
+    RegularRevisionDateStatement(final Revision argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        super(context, substatements);
+        super(argument, substatements);
     }
 }
index 40d413c9725aad042eba8c84a5aa656e21166c15..26c477cd1cb45a5def05a7a9336f019200381e6a 100644 (file)
@@ -52,12 +52,12 @@ public final class RevisionDateStatementSupport
     @Override
     protected RevisionDateStatement createDeclared(final StmtContext<Revision, RevisionDateStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularRevisionDateStatement(ctx, substatements);
+        return new RegularRevisionDateStatement(ctx.coerceStatementArgument(), substatements);
     }
 
     @Override
     protected RevisionDateStatement createEmptyDeclared(final StmtContext<Revision, RevisionDateStatement, ?> ctx) {
-        return new EmptyRevisionDateStatement(ctx);
+        return new EmptyRevisionDateStatement(ctx.coerceStatementArgument());
     }
 
     @Override