JavaScript: Split up a predicate to avoid bad join order.

This commit is contained in:
Max Schaefer 2020-03-18 17:39:51 +00:00
Родитель d91e6a4893
Коммит ee62706ad2
1 изменённых файлов: 6 добавлений и 4 удалений

Просмотреть файл

@ -157,10 +157,12 @@ class InvokeNode extends DataFlow::SourceNode {
* `name` is set to `result`.
*/
DataFlow::ValueNode getOptionArgument(int i, string name) {
exists(ObjectLiteralNode obj |
obj.flowsTo(getArgument(i)) and
obj.hasPropertyWrite(name, result)
)
getOptionsArgument(i).hasPropertyWrite(name, result)
}
pragma[noinline]
private ObjectLiteralNode getOptionsArgument(int i) {
result.flowsTo(getArgument(i))
}
/** Gets an abstract value representing possible callees of this call site. */