[JS KLIB IC] Implement incremental cache for IR
This commit is contained in:
@@ -31,11 +31,14 @@ interface IncrementalDataProvider {
|
||||
|
||||
/** gets non-dirty package metadata from previous compilation */
|
||||
val packageMetadata: Map<String, ByteArray>
|
||||
|
||||
val serializedIrFiles: Map<File, IrTranslationResultValue>
|
||||
}
|
||||
|
||||
class IncrementalDataProviderImpl(
|
||||
override val headerMetadata: ByteArray,
|
||||
override val compiledPackageParts: Map<File, TranslationResultValue>,
|
||||
override val metadataVersion: IntArray,
|
||||
override val packageMetadata: Map<String, ByteArray>
|
||||
override val packageMetadata: Map<String, ByteArray>,
|
||||
override val serializedIrFiles: Map<File, IrTranslationResultValue>
|
||||
) : IncrementalDataProvider
|
||||
|
||||
+29
-1
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.incremental.js
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import java.io.File
|
||||
import java.io.Serializable
|
||||
import java.security.MessageDigest
|
||||
@@ -42,6 +41,17 @@ interface IncrementalResultsConsumer {
|
||||
fun processInlineFunctions(functions: Collection<JsInlineFunctionHash>)
|
||||
|
||||
fun processPackageMetadata(packageName: String, metadata: ByteArray)
|
||||
|
||||
fun processIrFile(
|
||||
sourceFile: File,
|
||||
fileData: ByteArray,
|
||||
symbols: ByteArray,
|
||||
types: ByteArray,
|
||||
strings: ByteArray,
|
||||
declarations: ByteArray,
|
||||
bodies: ByteArray,
|
||||
fqn: ByteArray
|
||||
)
|
||||
}
|
||||
|
||||
class JsInlineFunctionHash(val sourceFilePath: String, val fqName: String, val inlineFunctionMd5Hash: Long): Serializable
|
||||
@@ -108,6 +118,24 @@ class IncrementalResultsConsumerImpl : IncrementalResultsConsumer {
|
||||
override fun processPackageMetadata(packageName: String, metadata: ByteArray) {
|
||||
_packageMetadata[packageName] = metadata
|
||||
}
|
||||
|
||||
// class IrFileData(fileData: ByteArray, symbols: ByteArray, types: ByteArray, strings: ByteArray, bodies: ByteArray, declarations: ByteArray)
|
||||
private val _irFileData = hashMapOf<File, IrTranslationResultValue>()
|
||||
val irFileData: Map<File, IrTranslationResultValue>
|
||||
get() = _irFileData
|
||||
|
||||
override fun processIrFile(
|
||||
sourceFile: File,
|
||||
fileData: ByteArray,
|
||||
symbols: ByteArray,
|
||||
types: ByteArray,
|
||||
strings: ByteArray,
|
||||
declarations: ByteArray,
|
||||
bodies: ByteArray,
|
||||
fqn: ByteArray
|
||||
) {
|
||||
_irFileData[sourceFile] = IrTranslationResultValue(fileData, symbols, types, strings, declarations, bodies, fqn)
|
||||
}
|
||||
}
|
||||
|
||||
private fun ByteArray.md5(): Long {
|
||||
|
||||
@@ -18,3 +18,13 @@ package org.jetbrains.kotlin.incremental.js
|
||||
|
||||
data class TranslationResultValue(val metadata: ByteArray, val binaryAst: ByteArray, val inlineData: ByteArray)
|
||||
|
||||
|
||||
data class IrTranslationResultValue(
|
||||
val fileData: ByteArray,
|
||||
val symbols: ByteArray,
|
||||
val types: ByteArray,
|
||||
val strings: ByteArray,
|
||||
val declarations: ByteArray,
|
||||
val bodies: ByteArray,
|
||||
val fqn: ByteArray
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user