Move implicitDeclaredFlag 40/100940/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 3 May 2022 15:36:54 +0000 (17:36 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 3 May 2022 16:17:05 +0000 (16:17 +0000)
We require JDK17, hence we can rely on improved object layout and
do not need to play as many tricks with field shadowing. Move the flag
to its sole user.

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

index 1358f284ffe477610b07b80791922d3aa02e7200..e085978af3ba34ee5d52b967e913f42c0e3e8422 100644 (file)
@@ -39,6 +39,7 @@ abstract class AbstractResumedStatement<A, D extends DeclaredStatement<A>, E ext
 
     private StatementMap substatements = StatementMap.empty();
     private @Nullable D declaredInstance;
+    private boolean implicitDeclared;
 
     // Copy constructor
     AbstractResumedStatement(final AbstractResumedStatement<A, D, E> original) {
@@ -80,7 +81,7 @@ abstract class AbstractResumedStatement<A, D extends DeclaredStatement<A>, E ext
     @SuppressWarnings({ "rawtypes", "unchecked" })
     private @NonNull Stream<DeclaredStatement<?>> substatementsAsDeclared() {
         final Stream<AbstractResumedStatement<?, ?, ?>> stream;
-        if (getImplicitDeclaredFlag()) {
+        if (implicitDeclared) {
             stream = substatements.stream().map(AbstractResumedStatement::unmaskUndeclared);
         } else {
             stream = (Stream) substatements.stream();
@@ -155,7 +156,7 @@ abstract class AbstractResumedStatement<A, D extends DeclaredStatement<A>, E ext
         final SubstatementContext<X, Y, Z> ret;
         final var implicitParent = definition().getImplicitParentFor(this, def.getPublicView());
         if (implicitParent.isPresent()) {
-            setImplicitDeclaredFlag();
+            implicitDeclared = true;
             final var parent = createUndeclared(offset, implicitParent.orElseThrow(), ref, argument);
             ret = new SubstatementContext<>(parent, def, ref, argument);
             parent.addEffectiveSubstatement(ret);
index 1be883cd2b2213fea83f50024247b09c67e87a7c..7e4f2bca1b4b0772ce88a797fa210ca9ccc84693 100644 (file)
@@ -150,12 +150,6 @@ abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E extends
      */
     private byte executionOrder;
 
-    /**
-     * This field should live in AbstractResumedStatement, but is placed here for memory efficiency to squat in the
-     * alignment shadow of {@link #bitsAight} and {@link #executionOrder}.
-     */
-    private boolean implicitDeclaredFlag;
-
     // TODO: we a single byte of alignment shadow left, we should think how we can use it to cache information we build
     //       during InferredStatementContext.tryToReusePrototype(). We usually end up being routed to
     //       copyAsChildOfImpl() -- which performs an eager instantiation and checks for changes afterwards. We should
@@ -877,13 +871,4 @@ abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E extends
      * @return True if {@link #allSubstatements()} and {@link #allSubstatementsStream()} would return an empty stream.
      */
     abstract boolean hasEmptySubstatements();
-
-    // Note: these two are exposed for AbstractResumedStatement only
-    final boolean getImplicitDeclaredFlag() {
-        return implicitDeclaredFlag;
-    }
-
-    final void setImplicitDeclaredFlag() {
-        implicitDeclaredFlag = true;
-    }
 }