-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
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
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 👍
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
TNodeEx
newtype
fromDataFlowImpl.qll
intoDataFlowImplCommon.qll
(and makes itcached
). The purpose of doing this is to avoid an additionalnewtype
creation 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 BooleanhasRead
column fromTNodeImplicitRead
, in order to the size of thenewtype
when later caching it. This commit then also adjusts the generatededges
relation by never revealing the implicit reads that happen at sinks.Commit-by-commit review is suggested.