Skip to content

Commit 487b5d2

Browse files
committed
Java: Simplify instantiation of Guards and ControlFlowReachability.
1 parent e5d13d6 commit 487b5d2

File tree

3 files changed

+6
-44
lines changed

3 files changed

+6
-44
lines changed

java/ql/lib/semmle/code/java/controlflow/ControlFlowReachability.qll

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ module;
66

77
import java
88
private import codeql.controlflow.ControlFlowReachability
9-
private import semmle.code.java.dataflow.SSA as SSA
9+
private import semmle.code.java.dataflow.SSA
1010
private import semmle.code.java.controlflow.Guards as Guards
1111

1212
private module ControlFlowInput implements InputSig<Location, ControlFlowNode, BasicBlock> {
1313
private import java as J
14+
import Ssa
1415

1516
AstNode getEnclosingAstNode(ControlFlowNode node) { node.getAstNode() = result }
1617

@@ -27,23 +28,6 @@ private module ControlFlowInput implements InputSig<Location, ControlFlowNode, B
2728

2829
class Expr = J::Expr;
2930

30-
class SourceVariable = SSA::SsaSourceVariable;
31-
32-
class SsaDefinition = SSA::SsaVariable;
33-
34-
class SsaExplicitWrite extends SsaDefinition instanceof SSA::SsaExplicitUpdate {
35-
Expr getValue() {
36-
super.getDefiningExpr().(VariableAssign).getSource() = result or
37-
super.getDefiningExpr().(AssignOp) = result
38-
}
39-
}
40-
41-
class SsaPhiDefinition = SSA::SsaPhiNode;
42-
43-
class SsaUncertainWrite extends SsaDefinition instanceof SSA::SsaUncertainImplicitUpdate {
44-
SsaDefinition getPriorDefinition() { result = super.getPriorDef() }
45-
}
46-
4731
class GuardValue = Guards::GuardValue;
4832

4933
predicate ssaControlsBranchEdge(SsaDefinition def, BasicBlock bb1, BasicBlock bb2, GuardValue v) {

java/ql/lib/semmle/code/java/controlflow/Guards.qll

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -416,30 +416,8 @@ private module LogicInput_v1 implements GuardsImpl::LogicInputSig {
416416
}
417417

418418
private module LogicInput_v2 implements GuardsImpl::LogicInputSig {
419-
private import semmle.code.java.dataflow.SSA as SSA
420-
421-
final private class FinalSsaVariable = SSA::SsaVariable;
422-
423-
class SsaDefinition extends FinalSsaVariable {
424-
GuardsInput::Expr getARead() { result = this.getAUse() }
425-
}
426-
427-
class SsaExplicitWrite extends SsaDefinition instanceof SSA::SsaExplicitUpdate {
428-
GuardsInput::Expr getValue() {
429-
super.getDefiningExpr().(VariableAssign).getSource() = result or
430-
super.getDefiningExpr().(AssignOp) = result
431-
}
432-
}
433-
434-
class SsaPhiDefinition extends SsaDefinition instanceof SSA::SsaPhiNode {
435-
predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) {
436-
super.hasInputFromBlock(inp, bb)
437-
}
438-
}
439-
440-
class SsaParameterInit extends SsaDefinition instanceof SSA::SsaImplicitInit {
441-
Parameter getParameter() { super.isParameterDefinition(result) }
442-
}
419+
private import semmle.code.java.dataflow.SSA
420+
import Ssa
443421

444422
predicate additionalNullCheck = LogicInputCommon::additionalNullCheck/4;
445423

java/ql/lib/semmle/code/java/dataflow/Nullness.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,9 @@ private predicate impossibleEdge(BasicBlock bb1, BasicBlock bb2) {
249249
}
250250

251251
private module NullnessConfig implements ControlFlowReachability::ConfigSig {
252-
predicate source(ControlFlowNode node, SsaVariable def) { varMaybeNull(def, node, _, _) }
252+
predicate source(ControlFlowNode node, SsaDefinition def) { varMaybeNull(def, node, _, _) }
253253

254-
predicate sink(ControlFlowNode node, SsaVariable def) { varDereference(def, _) = node }
254+
predicate sink(ControlFlowNode node, SsaDefinition def) { varDereference(def, _) = node }
255255

256256
predicate barrierValue(GuardValue gv) { gv.isNullness(false) }
257257

0 commit comments

Comments
 (0)