Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3b663bd

Browse files
committed
JS: Remove BasicBlockInternal module and mark relevant predicates as public
This exposes the predicates publicly, but will be hidden again in the next commit.
1 parent 211b42d commit 3b663bd

2 files changed

Lines changed: 4 additions & 11 deletions

File tree

javascript/ql/lib/semmle/javascript/dataflow/internal/sharedlib/Ssa.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
private import javascript as js
88
private import codeql.ssa.Ssa
9+
private import semmle.javascript.internal.BasicBlockInternal as BasicBlockInternal
910

1011
private module SsaConfig implements InputSig<js::DbLocation> {
1112
class ControlFlowNode = js::ControlFlowNode;
@@ -38,8 +39,7 @@ private module SsaConfig implements InputSig<js::DbLocation> {
3839
bb.useAt(i, v, _) and certain = true
3940
}
4041

41-
predicate getImmediateBasicBlockDominator =
42-
js::BasicBlockInternal::getImmediateBasicBlockDominator/1;
42+
predicate getImmediateBasicBlockDominator = BasicBlockInternal::immediateDominator/1;
4343

4444
pragma[inline]
4545
BasicBlock getABasicBlockSuccessor(BasicBlock bb) { result = bb.getASuccessor() }

javascript/ql/lib/semmle/javascript/internal/BasicBlockInternal.qll

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ import javascript
77
private import semmle.javascript.internal.StmtContainers
88
private import semmle.javascript.internal.CachedStages
99

10-
module BasicBlockInternal {
11-
// TODO: Expose these as public predicate in a private module instead of this hack.
12-
predicate getImmediateBasicBlockDominator = immediateDominator/1;
13-
}
14-
1510
/**
1611
* Holds if `nd` starts a new basic block.
1712
*/
@@ -109,13 +104,11 @@ private import Internal
109104

110105
/** Gets the immediate dominator of `bb`. */
111106
cached
112-
private BasicBlock immediateDominator(BasicBlock bb) =
113-
idominance(entryBB/1, succBB/2)(_, result, bb)
107+
BasicBlock immediateDominator(BasicBlock bb) = idominance(entryBB/1, succBB/2)(_, result, bb)
114108

115109
/** Gets the immediate post-dominator of `bb`. */
116110
cached
117-
private BasicBlock immediatePostDominator(BasicBlock bb) =
118-
idominance(exitBB/1, predBB/2)(_, result, bb)
111+
BasicBlock immediatePostDominator(BasicBlock bb) = idominance(exitBB/1, predBB/2)(_, result, bb)
119112

120113
/**
121114
* A basic block, that is, a maximal straight-line sequence of control flow nodes

0 commit comments

Comments
 (0)