Java: Performance fixes for local flow relation#9195
Conversation
atorralba
left a comment
There was a problem hiding this comment.
Looks plausible to me, just one minor comment.
There are a couple of tricks (namely fastTC and (any() or strictcount(Node n1, Node n2, AdditionalValueStep a | a.step(n1, n2)) < 0)) that I would like to learn more about at some point, though :)
|
f682f3e to
a4a004a
Compare
|
There are some large regressions for Ruby; could be because of the missing pragmas mentioned above. |
|
DCA looks good now. |
The local flow relation was accidentally made mutually recursive with
AdditionalValueStep. It makes sense to allow the use for local flow to defineAdditionalValueStep::step, so removing the latter from the former allows this without recursion.A non-monotonic dummy reference is added to prevent re-introduction of recursion here, and this highlighted the need for a minor refactor in
FlowSummaryImpl(sinceReturnNodeExtdepends on local flow).The local flow relation is also fixed to force the use of the fastTC hop, as this otherwise was observed to result in a very slow materialisation.