Skip to content

Commit 47b38db

Browse files
gavra0ilmirus
authored andcommitted
Use MD5 when caching class ABI structure
This avoids Kotlin Gradle plugin dependency on Guava, and it is a good hash function for this use-case. Also fix some formatting.
1 parent b3be525 commit 47b38db

File tree

4 files changed

+8
-5
lines changed

4 files changed

+8
-5
lines changed

libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/incremental/ClassAbiExtractor.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.internal.kapt.incremental
88
import org.jetbrains.org.objectweb.asm.*
99

1010
const val metadataDescriptor: String = "Lkotlin/Metadata;"
11+
1112
class ClassAbiExtractor(private val writer: ClassWriter) : ClassVisitor(Opcodes.API_VERSION, writer) {
1213

1314
override fun visitMethod(

libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/incremental/ClassTypeExtractorVisitor.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ClassTypeExtractorVisitor(visitor: ClassVisitor) : ClassVisitor(Opcodes.AP
1717
private lateinit var classInternalName: String
1818

1919
fun getAbiTypes() = abiTypes.filter { !toIgnore.contains(it) && it != classInternalName }.toSet()
20-
fun getPrivateTypes() = privateTypes.filter { !toIgnore.contains(it) && it != classInternalName && !abiTypes.contains(it)}.toSet()
20+
fun getPrivateTypes() = privateTypes.filter { !toIgnore.contains(it) && it != classInternalName && !abiTypes.contains(it) }.toSet()
2121

2222
override fun visit(version: Int, access: Int, name: String?, signature: String?, superName: String?, interfaces: Array<out String>?) {
2323
super.visit(version, access, name, signature, superName, interfaces)

libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/incremental/ClasspathAnalyzer.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
package org.jetbrains.kotlin.gradle.internal.kapt.incremental
77

8-
import com.google.common.hash.Hashing
98
import org.gradle.api.artifacts.transform.ArtifactTransform
109
import org.jetbrains.org.objectweb.asm.ClassReader
1110
import org.jetbrains.org.objectweb.asm.ClassWriter
1211
import java.io.*
12+
import java.security.MessageDigest
1313
import java.util.zip.ZipFile
1414

1515
const val CLASS_STRUCTURE_ARTIFACT_TYPE = "class-structure"
@@ -75,8 +75,9 @@ private fun analyzeInputStream(input: InputStream, internalName: String, entryDa
7575
)
7676

7777
val bytes = abiExtractor.getBytes()
78-
val hashBytes = Hashing.murmur3_128().hashBytes(bytes)
79-
entryData.classAbiHash[internalName] = hashBytes.asBytes()
78+
val digest = MessageDigest.getInstance("MD5").digest(bytes)
79+
80+
entryData.classAbiHash[internalName] = digest
8081
entryData.classDependencies[internalName] =
8182
ClassDependencies(typeDependenciesExtractor.getAbiTypes(), typeDependenciesExtractor.getPrivateTypes())
8283
}

libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/incremental/ClasspathSnapshot.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.internal.kapt.incremental
77

88
import java.io.*
99
import java.util.*
10+
1011
open class ClasspathSnapshot protected constructor(
1112
private val cacheDir: File,
1213
private val classpath: Iterable<File>,
@@ -146,7 +147,7 @@ open class ClasspathSnapshot protected constructor(
146147

147148
val allImpacted = mutableSetOf<String>()
148149
var current = changedClasses
149-
while(current.isNotEmpty()) {
150+
while (current.isNotEmpty()) {
150151
val newRound = mutableSetOf<String>()
151152
for (klass in current) {
152153
if (allImpacted.add(klass)) {

0 commit comments

Comments
 (0)