Skip to content

Commit 90f350b

Browse files
committed
support running bencher with Java 17; upgraded Kotlin to 1.9.10; upgraded WALA 1.6.2 and Arrow to 1.2.1
1 parent b6ebe28 commit 90f350b

File tree

67 files changed

+958
-791
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+958
-791
lines changed

.idea/kotlinc.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.gradle.kts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
object V {
2-
const val arrow = "0.13.2"
2+
const val arrow = "1.2.1"
33
const val asm = "9.2"
44
const val commonsCSV = "1.8"
55
const val commonsIO = "2.11.0"
@@ -9,15 +9,15 @@ object V {
99
const val jmetal = "5.11"
1010
const val jmh = "1.32"
1111
const val junit = "5.7.2"
12-
const val jvmTarget = "11"
12+
const val jvmTarget = "17"
1313
const val klaxon = "5.5"
1414
const val log4j2 = "2.16.0"
1515
const val picocli = "4.6.3"
16-
const val wala = "1.5.6"
16+
const val wala = "1.6.2"
1717
}
1818

1919
plugins {
20-
kotlin("jvm") version "1.6.10"
20+
kotlin("jvm") version "1.9.10"
2121
application
2222
`maven-publish`
2323
id("com.github.johnrengelman.shadow") version "7.0.0"

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/change/JarChangeFinder.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package ch.uzh.ifi.seal.bencher.analysis.change
22

33
import arrow.core.Either
4-
import arrow.core.getOrHandle
4+
import arrow.core.getOrElse
55
import ch.uzh.ifi.seal.bencher.Class
66
import ch.uzh.ifi.seal.bencher.analysis.JarHelper
77
import ch.uzh.ifi.seal.bencher.analysis.finder.asm.AsmBenchClassVisitor
@@ -29,13 +29,13 @@ class JarChangeFinder(
2929

3030
try {
3131
val j1 = JarHelper.extractJar(tmpDir, oldJar, "old")
32-
.getOrHandle {
32+
.getOrElse {
3333
return Either.Left(it)
3434
}
3535
val j1Hashes = hashes(j1)
3636

3737
val j2 = JarHelper.extractJar(tmpDir, newJar, "new")
38-
.getOrHandle {
38+
.getOrElse {
3939
return Either.Left(it)
4040
}
4141
val j2Hashes = hashes(j2)

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/CoverageCommand.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package ch.uzh.ifi.seal.bencher.analysis.coverage
22

33
import arrow.core.None
44
import arrow.core.Option
5-
import arrow.core.getOrHandle
5+
import arrow.core.getOrElse
66
import ch.uzh.ifi.seal.bencher.CommandExecutor
77
import java.nio.file.Path
88

@@ -13,7 +13,7 @@ class CoverageCommand(
1313
) : CommandExecutor {
1414

1515
override fun execute(): Option<String> {
16-
val r = covExec.get(jar).getOrHandle {
16+
val r = covExec.get(jar).getOrElse {
1717
return Option(it)
1818
}
1919
covPrinter.print(r)

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/CoverageReader.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ class SimpleCoverageReader(
3030
if (inBench) {
3131
// add previous benchmark calls to res
3232
res[currentBench] = Coverage(
33-
of = currentBench,
34-
unitResults = mcs
33+
of = currentBench,
34+
unitResults = mcs
3535
)
3636
}
3737
// initialize empty MethodCall set
@@ -49,7 +49,7 @@ class SimpleCoverageReader(
4949
}
5050

5151
val mc = parseCoverageUnitResult(currentBench.toPlainMethod(), l)
52-
.getOrHandle {
52+
.getOrElse {
5353
return Either.Left("Could not parse into CoverageUnitResult: $l (reason: $it)")
5454
}
5555
?: // no parsing error but nothing to add

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/dyn/AbstractDynamicCoverage.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package ch.uzh.ifi.seal.bencher.analysis.coverage.dyn
22

33
import arrow.core.Either
4-
import arrow.core.getOrHandle
4+
import arrow.core.getOrElse
55
import ch.uzh.ifi.seal.bencher.Benchmark
66
import ch.uzh.ifi.seal.bencher.Method
77
import ch.uzh.ifi.seal.bencher.analysis.JarHelper
@@ -28,7 +28,7 @@ abstract class AbstractDynamicCoverage(
2828

2929
override fun get(jar: Path): Either<String, Coverages> {
3030
val ebs = benchmarkFinder.all()
31-
val bs: List<Benchmark> = ebs.getOrHandle {
31+
val bs: List<Benchmark> = ebs.getOrElse {
3232
return Either.Left(it)
3333
}
3434

@@ -40,7 +40,7 @@ abstract class AbstractDynamicCoverage(
4040
val l = logTimes(b, i, total, "Coverages for")
4141
val ecov = coverages(jar, b)
4242
l()
43-
ecov.getOrHandle {
43+
ecov.getOrElse {
4444
return Either.Left(it)
4545
}
4646
}.flatten().toMap()
@@ -118,7 +118,7 @@ abstract class AbstractDynamicCoverage(
118118
.map {
119119
Pair(b, it)
120120
}
121-
.orNull()
121+
.getOrNull()
122122
} finally {
123123
l()
124124
}
@@ -174,7 +174,7 @@ abstract class AbstractDynamicCoverage(
174174
}
175175

176176
val ecf = transformResultFile(jar, dir, b, f)
177-
val cf = ecf.getOrHandle {
177+
val cf = ecf.getOrElse {
178178
return Either.Left("Could not transform result file into coverage file: $it")
179179
}
180180

@@ -187,7 +187,7 @@ abstract class AbstractDynamicCoverage(
187187
}
188188

189189
FileReader(cf).use { fr ->
190-
val covUnitResults = parseCoverageUnitResults(fr, b).getOrHandle {
190+
val covUnitResults = parseCoverageUnitResults(fr, b).getOrElse {
191191
return Either.Left(it)
192192
}
193193

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/dyn/jacoco/JacocoDC.kt

+18-15
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package ch.uzh.ifi.seal.bencher.analysis.coverage.dyn.jacoco
22

33
import arrow.core.Either
44
import arrow.core.getOrElse
5-
import arrow.core.getOrHandle
65
import ch.uzh.ifi.seal.bencher.*
76
import ch.uzh.ifi.seal.bencher.analysis.SourceCodeConstants
87
import ch.uzh.ifi.seal.bencher.analysis.coverage.CoverageExecutor
@@ -142,22 +141,26 @@ class JacocoDC(
142141
if (state == 10) {
143142
state += 10
144143

145-
val nr = intAttr(sr, xmlAttrNr).getOrHandle { return Either.Left(it) }
146-
val mi = intAttr(sr, xmlAttrMissedInstructions).getOrHandle { return Either.Left(it) }
147-
val ci = intAttr(sr, xmlAttrCoveredInstructions).getOrHandle { return Either.Left(it) }
148-
val mb = intAttr(sr, xmlAttrMissedBranches).getOrHandle { return Either.Left(it) }
149-
val cb = intAttr(sr, xmlAttrCoveredBranches).getOrHandle { return Either.Left(it) }
144+
val nr = intAttr(sr, xmlAttrNr).getOrElse { return Either.Left(it) }
145+
val mi =
146+
intAttr(sr, xmlAttrMissedInstructions).getOrElse { return Either.Left(it) }
147+
val ci =
148+
intAttr(sr, xmlAttrCoveredInstructions).getOrElse { return Either.Left(it) }
149+
val mb = intAttr(sr, xmlAttrMissedBranches).getOrElse { return Either.Left(it) }
150+
val cb = intAttr(sr, xmlAttrCoveredBranches).getOrElse { return Either.Left(it) }
150151

151152
if (ci != 0 || cb != 0) {
152-
lineCoverage.add(lineCovered(
153-
of = of,
154-
f = fileName,
155-
ln = nr,
156-
mi = mi,
157-
ci = ci,
158-
mb = mb,
159-
cb = cb
160-
))
153+
lineCoverage.add(
154+
lineCovered(
155+
of = of,
156+
f = fileName,
157+
ln = nr,
158+
mi = mi,
159+
ci = ci,
160+
mb = mb,
161+
cb = cb
162+
)
163+
)
161164
}
162165
}
163166
}

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/dyn/javacallgraph/JavaCallgraphDC.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package ch.uzh.ifi.seal.bencher.analysis.coverage.dyn.javacallgraph
22

33
import arrow.core.Either
4-
import arrow.core.getOrHandle
4+
import arrow.core.getOrElse
55
import ch.uzh.ifi.seal.bencher.Benchmark
66
import ch.uzh.ifi.seal.bencher.MF
77
import ch.uzh.ifi.seal.bencher.Method
@@ -51,7 +51,7 @@ class JavaCallgraphDC(
5151
}
5252
}
5353
.map {
54-
parseCoverageUnitResult(bpm, benchLevel, it).getOrHandle { err ->
54+
parseCoverageUnitResult(bpm, benchLevel, it).getOrElse { err ->
5555
log.error("Could not parse CoverageUnitResult: $err")
5656
null
5757
}
@@ -79,7 +79,7 @@ class JavaCallgraphDC(
7979
}
8080
}
8181
.filter { it.startsWith(">") }
82-
.map { parseCoverageUnitResult(bpm, benchLevel, it).orNull() }
82+
.map { parseCoverageUnitResult(bpm, benchLevel, it).getOrNull() }
8383
.filter { it != null }
8484
.map { it as CoverageUnitResult }
8585
.toList()

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/sta/Entrypoints.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package ch.uzh.ifi.seal.bencher.analysis.coverage.sta
22

33
import arrow.core.Either
4-
import arrow.core.getOrHandle
4+
import arrow.core.getOrElse
55
import ch.uzh.ifi.seal.bencher.MF
66
import ch.uzh.ifi.seal.bencher.Method
77
import ch.uzh.ifi.seal.bencher.analysis.JMHConstants
@@ -55,13 +55,13 @@ class CGEntrypoints(
5555
override fun generate(scope: AnalysisScope, ch: ClassHierarchy): Either<String, Entrypoints> {
5656
val ems = mf.all()
5757

58-
val ms = ems.getOrHandle {
58+
val ms = ems.getOrElse {
5959
return Either.Left(it)
6060
}
6161

6262
val cgEps: LazyEntrypoints = ms.asSequence().mapNotNull { m ->
6363
val eps = me.entrypoints(scope, ch, m)
64-
eps.orNull()
64+
eps.getOrNull()
6565
}
6666

6767
return Either.Right(ea.assemble(cgEps))
@@ -80,7 +80,7 @@ class AllApplicationEntrypoints(
8080
val em = mf.all()
8181

8282
val methods = em
83-
.getOrHandle {
83+
.getOrElse {
8484
return Either.Left(it)
8585
}
8686
.toSet()

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/sta/WalaSC.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package ch.uzh.ifi.seal.bencher.analysis.coverage.sta
22

33
import arrow.core.Either
4-
import arrow.core.getOrHandle
4+
import arrow.core.getOrElse
55
import ch.uzh.ifi.seal.bencher.Method
66
import ch.uzh.ifi.seal.bencher.analysis.WalaProperties
77
import ch.uzh.ifi.seal.bencher.analysis.coverage.*
@@ -10,9 +10,9 @@ import ch.uzh.ifi.seal.bencher.analysis.coverage.computation.Coverage
1010
import ch.uzh.ifi.seal.bencher.analysis.coverage.computation.CoverageUnitMethod
1111
import ch.uzh.ifi.seal.bencher.analysis.coverage.computation.CoverageUnitResult
1212
import ch.uzh.ifi.seal.bencher.fileResource
13+
import com.ibm.wala.core.util.config.AnalysisScopeReader
1314
import com.ibm.wala.ipa.callgraph.*
1415
import com.ibm.wala.ipa.cha.ClassHierarchyFactory
15-
import com.ibm.wala.util.config.AnalysisScopeReader
1616
import org.apache.logging.log4j.LogManager
1717
import java.nio.file.Path
1818
import java.util.*
@@ -31,10 +31,10 @@ class WalaSC(
3131
return Either.Left("Exclusions file '${WalaProperties.exclFile}' does not exist")
3232
}
3333

34-
val scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope(jar.toAbsolutePath().toString(), ef)
34+
val scope = AnalysisScopeReader.instance.makeJavaBinaryAnalysisScope(jar.toAbsolutePath().toString(), ef)
3535
val ch = ClassHierarchyFactory.make(scope)
3636

37-
val multipleEps = entrypoints.generate(scope, ch).getOrHandle {
37+
val multipleEps = entrypoints.generate(scope, ch).getOrElse {
3838
return Either.Left("Could not generate entry points: $it")
3939
}
4040

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/coverage/sta/WalaSCGAlgo.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,35 @@ interface WalaSCGAlgo {
1616

1717
class WalaRTA : WalaSCGAlgo {
1818
override fun cg(opt: AnalysisOptions, scope: AnalysisScope, cache: AnalysisCache, ch: IClassHierarchy): CallGraph {
19-
val rtaBuilder = Util.makeRTABuilder(opt, cache, ch, scope)
19+
val rtaBuilder = Util.makeRTABuilder(opt, cache, ch)
2020
return rtaBuilder.makeCallGraph(opt, NullProgressMonitor())
2121
}
2222
}
2323

2424
class Wala0CFA : WalaSCGAlgo {
2525
override fun cg(opt: AnalysisOptions, scope: AnalysisScope, cache: AnalysisCache, ch: IClassHierarchy): CallGraph {
26-
val ncfaBuilder = Util.makeZeroCFABuilder(Language.JAVA, opt, cache, ch, scope)
26+
val ncfaBuilder = Util.makeZeroCFABuilder(Language.JAVA, opt, cache, ch)
2727
return ncfaBuilder.makeCallGraph(opt)
2828
}
2929
}
3030

3131
class Wala01CFA : WalaSCGAlgo {
3232
override fun cg(opt: AnalysisOptions, scope: AnalysisScope, cache: AnalysisCache, ch: IClassHierarchy): CallGraph {
33-
val cfaBuilder = Util.makeZeroOneCFABuilder(Language.JAVA, opt, cache, ch, scope)
33+
val cfaBuilder = Util.makeZeroOneCFABuilder(Language.JAVA, opt, cache, ch)
3434
return cfaBuilder.makeCallGraph(opt)
3535
}
3636
}
3737

3838
class Wala01CFAContainer : WalaSCGAlgo {
3939
override fun cg(opt: AnalysisOptions, scope: AnalysisScope, cache: AnalysisCache, ch: IClassHierarchy): CallGraph {
40-
val b = Util.makeZeroOneContainerCFABuilder(opt, cache, ch, scope)
40+
val b = Util.makeZeroOneContainerCFABuilder(opt, cache, ch)
4141
return b.makeCallGraph(opt)
4242
}
4343
}
4444

4545
class Wala1CFA : WalaSCGAlgo {
4646
override fun cg(opt: AnalysisOptions, scope: AnalysisScope, cache: AnalysisCache, ch: IClassHierarchy): CallGraph {
47-
val cfaBuilder = Util.makeNCFABuilder(1, opt, cache, ch, scope)
47+
val cfaBuilder = Util.makeNCFABuilder(1, opt, cache, ch)
4848
return cfaBuilder.makeCallGraph(opt)
4949
}
5050
}

src/main/kotlin/ch/uzh/ifi/seal/bencher/analysis/finder/IncompleteMethodFinder.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import ch.uzh.ifi.seal.bencher.analysis.coverage.sta.bencherMethod
88
import ch.uzh.ifi.seal.bencher.fileResource
99
import com.ibm.wala.classLoader.IClass
1010
import com.ibm.wala.classLoader.IMethod
11+
import com.ibm.wala.core.util.config.AnalysisScopeReader
1112
import com.ibm.wala.ipa.callgraph.AnalysisScope
1213
import com.ibm.wala.ipa.cha.ClassHierarchy
1314
import com.ibm.wala.ipa.cha.ClassHierarchyFactory
1415
import com.ibm.wala.types.TypeName
1516
import com.ibm.wala.types.TypeReference
16-
import com.ibm.wala.util.config.AnalysisScopeReader
1717
import org.apache.logging.log4j.LogManager
1818
import java.nio.file.Path
1919

@@ -40,7 +40,7 @@ class IncompleteMethodFinder(
4040
return Either.Left("Exclusions file '${WalaProperties.exclFile}' does not exist")
4141
}
4242

43-
val scope = AnalysisScopeReader.makeJavaBinaryAnalysisScope(jar.toAbsolutePath().toString(), ef)
43+
val scope = AnalysisScopeReader.instance.makeJavaBinaryAnalysisScope(jar.toAbsolutePath().toString(), ef)
4444
val ch = ClassHierarchyFactory.make(scope)
4545

4646
return Either.Right(methods.map { m ->

0 commit comments

Comments
 (0)