JS: cache metadata, grouped by package FQN
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.incremental.js
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import java.io.File
|
||||
|
||||
// byte arrays are used to simplify passing to different classloaders
|
||||
@@ -27,10 +28,14 @@ interface IncrementalDataProvider {
|
||||
val compiledPackageParts: Map<File, TranslationResultValue>
|
||||
|
||||
val metadataVersion: IntArray
|
||||
|
||||
/** gets non-dirty package metadata from previous compilation */
|
||||
val packageMetadata: Map<String, ByteArray>
|
||||
}
|
||||
|
||||
class IncrementalDataProviderImpl(
|
||||
override val headerMetadata: ByteArray,
|
||||
override val compiledPackageParts: Map<File, TranslationResultValue>,
|
||||
override val metadataVersion: IntArray
|
||||
override val metadataVersion: IntArray,
|
||||
override val packageMetadata: Map<String, ByteArray>
|
||||
) : IncrementalDataProvider
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.incremental.js
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import java.io.File
|
||||
import java.io.Serializable
|
||||
import java.security.MessageDigest
|
||||
@@ -39,6 +40,8 @@ interface IncrementalResultsConsumer {
|
||||
* Used in daemon RPC.
|
||||
*/
|
||||
fun processInlineFunctions(functions: Collection<JsInlineFunctionHash>)
|
||||
|
||||
fun processPackageMetadata(packageName: String, metadata: ByteArray)
|
||||
}
|
||||
|
||||
class JsInlineFunctionHash(val sourceFilePath: String, val fqName: String, val inlineFunctionMd5Hash: Long): Serializable
|
||||
@@ -97,6 +100,14 @@ class IncrementalResultsConsumerImpl : IncrementalResultsConsumer {
|
||||
val mapForSource = _deferInlineFuncs.getOrPut(sourceFile) { hashMapOf() }
|
||||
mapForSource[fqName] = FunctionWithSourceInfo(inlineFunction, line, column)
|
||||
}
|
||||
|
||||
private val _packageMetadata = hashMapOf<String, ByteArray>()
|
||||
val packageMetadata: Map<String, ByteArray>
|
||||
get() = _packageMetadata
|
||||
|
||||
override fun processPackageMetadata(packageName: String, metadata: ByteArray) {
|
||||
_packageMetadata[packageName] = metadata
|
||||
}
|
||||
}
|
||||
|
||||
private fun ByteArray.md5(): Long {
|
||||
|
||||
Reference in New Issue
Block a user