-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Data flow: Cache TNodeEx
#17300
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
Data flow: Cache TNodeEx
#17300
Conversation
9d68c95 to
140d0e2
Compare
35caf3c to
1b90332
Compare
1b90332 to
d7bb558
Compare
d7bb558 to
cdf136f
Compare
36c92e2 to
cb57b7f
Compare
geoffw0
left a comment
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.
CPP, Swift changes LGTM. DCA looks fine as well, though performance-wise I can only detect wobble.
We've lost some duplicate nodes in Swift, which is probably a good thing assuming it was expected.
|
Two comments so far:
|
cb57b7f to
7218ff7
Compare
7218ff7 to
051d275
Compare
41e416f to
dfd35b2
Compare
|
@aschackmull : PR ready for review again. |
dfd35b2 to
c8c497b
Compare
| or | ||
| n2 = n1.getAnImplicitReadSuccessorAtSink(_) |
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.
Is this a relevant addition? Isn't this just for identifying subpath-wrappers through hidden callables?
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.
It matters when you have a subpath that ends at a sink, for example https://github.com/github/codeql/pull/17300/files#diff-54bce82118abe557abb0786a2be4a5761bd9ba673e50323071469138c6d57a56R597.
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.
That anchored link doesn't work for me. But it makes sense 👍
aschackmull
left a comment
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.
One minor comment, otherwise LGTM now.
ea2c617 to
300fdc3
Compare
This PR moves the
TNodeExnewtypefromDataFlowImpl.qllintoDataFlowImplCommon.qll(and makes itcached). The purpose of doing this is to avoid an additionalnewtypecreation for all instantiations of the data flow library, and as witnessed by the DCA runs it has a very positive impact on memory/cache usage (and in general also a modest impact on timing).Before moving the
newtype, the first commit removes the BooleanhasReadcolumn fromTNodeImplicitRead, in order to the size of thenewtypewhen later caching it. This commit then also adjusts the generatededgesrelation by never revealing the implicit reads that happen at sinks.Commit-by-commit review is suggested.