Skip to content

Commit b87ea78

Browse files
committed
cleanup
1 parent 6074060 commit b87ea78

7 files changed

Lines changed: 36 additions & 36 deletions

File tree

usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/ifds/EtsBackwardIfdsRunner.kt

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,24 @@ class EtsBackwardIfdsRunner<Fact, Event : AnalyzerEvent>(
2828

2929
private val queueIsEmpty = QueueEmptinessChanged(runner = this, isEmpty = true)
3030

31-
private val methods = graph.cp.projectAndSdkClasses.flatMap { it.methods + it.ctor }
32-
private val runners = methods.associateWith {
33-
EtsBackwardMethodRunner(
34-
graph = graph,
35-
method = it,
36-
analyzer = analyzer,
37-
traits = traits,
38-
manager = manager,
39-
commonRunner = this@EtsBackwardIfdsRunner,
40-
)
41-
}
31+
private val runners = mutableMapOf<EtsMethod, EtsBackwardMethodRunner<Fact, Event>>()
4232

4333
fun getMethodRunner(method: EtsMethod): EtsBackwardMethodRunner<Fact, Event> {
44-
return runners.getValue(method)
34+
return runners.getOrPut(method) {
35+
EtsBackwardMethodRunner(
36+
graph = graph,
37+
method = method,
38+
analyzer = analyzer,
39+
traits = traits,
40+
manager = manager,
41+
commonRunner = this@EtsBackwardIfdsRunner,
42+
)
43+
}
4544
}
4645

4746
override suspend fun run(startMethods: List<EtsMethod>) {
4847
for (method in startMethods) {
49-
runners[method]?.addStart()
48+
getMethodRunner(method).addStart()
5049
}
5150

5251
tabulationAlgorithm()

usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/ifds/EtsBackwardMethodRunner.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class EtsBackwardMethodRunner<Fact, Event : AnalyzerEvent>(
2727
/**
2828
* Remember only the sink since the source is specified by runner
2929
*
30-
* `ip` - index of the end statement
30+
* `ip` - index of the end statement (instruction pointer)
3131
*
3232
* `fact` - fact at the end statement
3333
*/

usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/ifds/EtsForwardIfdsRunner.kt

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,24 @@ class EtsForwardIfdsRunner<Fact, Event : AnalyzerEvent>(
2828

2929
private val queueIsEmpty = QueueEmptinessChanged(runner = this, isEmpty = true)
3030

31-
private val methods = graph.cp.projectAndSdkClasses.flatMap { it.methods + it.ctor }
32-
private val runners = methods.associateWith {
33-
EtsForwardMethodRunner(
34-
graph = graph,
35-
method = it,
36-
analyzer = analyzer,
37-
traits = traits,
38-
manager = manager,
39-
commonRunner = this@EtsForwardIfdsRunner
40-
)
41-
}
31+
private val runners = mutableMapOf<EtsMethod, EtsForwardMethodRunner<Fact, Event>>()
4232

4333
fun getMethodRunner(method: EtsMethod): EtsForwardMethodRunner<Fact, Event> {
44-
return runners.getValue(method)
34+
return runners.getOrPut(method) {
35+
EtsForwardMethodRunner(
36+
graph = graph,
37+
method = method,
38+
analyzer = analyzer,
39+
traits = traits,
40+
manager = manager,
41+
commonRunner = this@EtsForwardIfdsRunner
42+
)
43+
}
4544
}
4645

4746
override suspend fun run(startMethods: List<EtsMethod>) {
4847
for (method in startMethods) {
49-
val runner = runners[method] ?: continue
48+
val runner = getMethodRunner(method)
5049
runner.addStart()
5150
}
5251

usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/ifds/EtsForwardMethodRunner.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class EtsForwardMethodRunner<Fact, Event : AnalyzerEvent>(
9494
/**
9595
* Remember only the sink since the source is specified by runner
9696
*
97-
* `ip` - index of the end statement
97+
* `ip` - index of the end statement (instruction pointer)
9898
*
9999
* `fact` - fact at the end statement
100100
*/

usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/infer/ForwardAnalyzer.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ class ForwardAnalyzer(
3636

3737
private fun variableIsDying(fact: ForwardTypeDomainFact, stmt: EtsStmt): Boolean {
3838
if (fact !is ForwardTypeDomainFact.TypedVariable) return false
39-
val base = fact.variable.base
40-
if (base !is AccessPathBase.Local) return false
41-
return !flowFunctions.liveVariables(stmt.method).isAliveAt(base.name, stmt)
39+
return when (val base = fact.variable.base) {
40+
is AccessPathBase.Local -> !flowFunctions.liveVariables(stmt.method).isAliveAt(base.name, stmt)
41+
is AccessPathBase.Arg -> !flowFunctions.liveVariables(stmt.method).isAliveAt("arg(${base.index})", stmt)
42+
else -> false
43+
}
4244
}
4345

4446
override fun handleNewEdge(edge: Edge<ForwardTypeDomainFact, EtsStmt>): List<AnalyzerEvent> {

usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/infer/LiveVariables.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ interface LiveVariables {
2525
fun isAliveAt(local: String, stmt: EtsStmt): Boolean
2626

2727
companion object {
28-
private const val THRESHOLD: Int = 20
28+
private const val THRESHOLD: Int = 10
2929

3030
fun from(method: EtsMethod): LiveVariables =
3131
if (method.cfg.stmts.size > THRESHOLD) LiveVariablesImpl(method) else AlwaysAlive

usvm-ts-dataflow/src/test/kotlin/org/usvm/dataflow/ts/test/utils/PerformanceReport.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ data class PerformanceReport(
3333
fun dumpToString(): String = listOf<Any>(
3434
projectId,
3535
totalStmts,
36-
minTime.toString(unit = DurationUnit.SECONDS, decimals = 2),
37-
maxTime.toString(unit = DurationUnit.SECONDS, decimals = 2),
38-
avgTime.toString(unit = DurationUnit.SECONDS, decimals = 2),
39-
medianTime.toString(unit = DurationUnit.SECONDS, decimals = 2),
36+
minTime.toString(unit = DurationUnit.SECONDS, decimals = 1),
37+
maxTime.toString(unit = DurationUnit.SECONDS, decimals = 1),
38+
avgTime.toString(unit = DurationUnit.SECONDS, decimals = 1),
39+
medianTime.toString(unit = DurationUnit.SECONDS, decimals = 1),
4040
improvement.toBigDecimal().setScale(1, RoundingMode.HALF_UP).toDouble()
4141
).joinToString(
4242
separator = "|",

0 commit comments

Comments
 (0)