Add a refcount mechanism for substatements 36/93936/42
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 26 Nov 2020 12:39:02 +0000 (13:39 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 2 Dec 2020 10:39:30 +0000 (11:39 +0100)
commit862bcc04d84ef4d90dc81a8e82e8e812c94da3dd
tree2c59255cf268d9755a84f012189cbe2101808025
parent0a297e75ee792d3369b6a9fa161aa596c10b9f3d
Add a refcount mechanism for substatements

We need to defer cleaning substatements until there is no way
they could be referenced again. This can happen, for example,
when we make a copy through uses: source grouping can be built
independently, but needs to retain its effective statements
until all its copies are built as well.

This expands InferredStatementContext 8 bytes, which we will need
to reclaim/justify somehow.

At this point we end up with negligble post-build residue, but
peak usage remains high (and goes up a bit). We'll build on top
of that in further patches.

JIRA: YANGTOOLS-1184
Change-Id: I5d26846ee1a5ce705671d9e66d45137a3d1084cf
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java [new file with mode: 0644]
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReplicaStatementContext.java [new file with mode: 0644]
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SweptNamespace.java [new file with mode: 0644]