Skip to content

Commit f2f6d34

Browse files
authored
QL: improve performance of module resolution
1 parent 3ee6428 commit f2f6d34

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

ql/src/codeql_ql/ast/internal/Module.qll

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,21 @@ private module Cached {
186186
predicate resolveModuleExpr(ModuleExpr me, FileOrModule m) {
187187
not m = TFile(any(File f | f.getExtension() = "ql")) and
188188
not exists(me.getQualifier()) and
189-
definesModule(getEnclosingModule(me).getEnclosing*(), me.getName(), m, _)
189+
exists(ContainerOrModule enclosing, string name | resolveModuleExprHelper(me, enclosing, name) |
190+
definesModule(enclosing.getEnclosing*(), name, m, _)
191+
)
190192
or
191193
exists(FileOrModule mid |
192194
resolveModuleExpr(me.getQualifier(), mid) and
193195
definesModule(mid, me.getName(), m, true)
194196
)
195197
}
198+
199+
pragma[noinline]
200+
private predicate resolveModuleExprHelper(ModuleExpr me, ContainerOrModule enclosing, string name) {
201+
enclosing = getEnclosingModule(me) and
202+
name = me.getName()
203+
}
196204
}
197205

198206
import Cached

0 commit comments

Comments
 (0)