-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Only store one single unique Type
nodes for each type
#1304
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
oxisto
force-pushed
the
avoid-duplicate-type-nodes
branch
2 times, most recently
from
August 28, 2023 20:28
975788f
to
c05e277
Compare
oxisto
changed the title
Only store single unique
Only store one single unique Aug 28, 2023
Type
nodes for each typeType
nodes for each type
oxisto
force-pushed
the
avoid-duplicate-type-nodes
branch
from
August 28, 2023 20:57
c05e277
to
f9901ae
Compare
oxisto
force-pushed
the
avoid-duplicate-type-nodes
branch
3 times, most recently
from
August 29, 2023 08:30
fec5fc0
to
7b82760
Compare
konradweiss
requested changes
Aug 29, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would like some clarification on the KeySet and the use of isInstanceOf
cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/TypeManager.kt
Outdated
Show resolved
Hide resolved
konradweiss
approved these changes
Aug 29, 2023
oxisto
force-pushed
the
avoid-duplicate-type-nodes
branch
from
August 29, 2023 09:31
7b82760
to
cc9d0fb
Compare
KuechA
reviewed
Aug 29, 2023
cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/graph/TypeBuilder.kt
Outdated
Show resolved
Hide resolved
Instead of gathering individual type node objects and then squashing them back together, we just make sure that `registerType` only returns the single unique type object. However, the input into the function is still a `Type` object, which needs to be created temporarily (and then GC'd shortly after). To reduce the number of `Type` nodes needed as input, the `objectType` function does a pre-check now, if a `ObjectType` with the given name already exists, so new `Type` object is even created. This only is possible for non-generics types though.
oxisto
force-pushed
the
avoid-duplicate-type-nodes
branch
from
August 29, 2023 10:16
cc9d0fb
to
3a07ea0
Compare
Kudos, SonarCloud Quality Gate passed! |
oxisto
added a commit
that referenced
this pull request
Aug 29, 2023
Instead of gathering individual type node objects and then squashing them back together, we just make sure that `registerType` only returns the single unique type object. To reduce the number of `Type` nodes needed as input to `registerType`, the `objectType` function does a pre-check now, if a `ObjectType` with the given name already exists, so no new `Type` object is even created at all. This also removes the "secondary type edge" interface, which was only needed to merge extra usages of types in nodes. Now all type nodes are always referring to the single instance.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Instead of gathering individual type node objects and then squashing them back together, we just make sure that
registerType
only returns the single unique type object. To reduce the number ofType
nodes needed as input toregisterType
, theobjectType
function does a pre-check now, if aObjectType
with the given name already exists, so no newType
object is even created at all.This also removes the "secondary type edge" interface, which was only needed to merge extra usages of types in nodes. Now all type nodes are always referring to the single instance.