Skip to content

Commit 9af99f1

Browse files
authored
Merge pull request #5095 from alexet/imporve-js-perf
Javascript: Improve performance of ExplicitInvokeNode::getArgument
2 parents 7fef1a8 + 9d06c75 commit 9af99f1

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

javascript/ql/src/semmle/javascript/dataflow/DataFlow.qll

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1079,8 +1079,19 @@ module DataFlow {
10791079

10801080
override DataFlow::Node getCalleeNode() { result = DataFlow::valueNode(astNode.getCallee()) }
10811081

1082+
/**
1083+
* Whether i is an index that occurs after a spread argument.
1084+
*/
1085+
pragma[nomagic]
1086+
private predicate isIndexAfterSpread(int i) {
1087+
astNode.isSpreadArgument(i)
1088+
or
1089+
exists(astNode.getArgument(i)) and
1090+
isIndexAfterSpread(i - 1)
1091+
}
1092+
10821093
override DataFlow::Node getArgument(int i) {
1083-
not astNode.isSpreadArgument([0 .. i]) and
1094+
not isIndexAfterSpread(i) and
10841095
result = DataFlow::valueNode(astNode.getArgument(i))
10851096
}
10861097

0 commit comments

Comments
 (0)