JVM_IR: introduce modes for IR serialization
Instead of a Boolean flag -Xserialize-ir, use modes: none,inline,all. In "inline" mode, only information needed to deserialize bodies of inline functions is serialized. In the "all" mode, all declarations are serialized completely.
This commit is contained in:
committed by
TeamCityServer
parent
f760cd6736
commit
4caa71538d
+8
-2
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode
|
||||
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
|
||||
import org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer
|
||||
import org.jetbrains.kotlin.backend.jvm.serialization.proto.JvmIr
|
||||
import org.jetbrains.kotlin.config.JvmSerializeIrMode
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
@@ -20,11 +21,16 @@ class JvmIrSerializerSession(
|
||||
messageLogger: IrMessageLogger,
|
||||
private val declarationTable: DeclarationTable,
|
||||
expectDescriptorToSymbol: MutableMap<DeclarationDescriptor, IrSymbol>,
|
||||
externallyVisibleOnly: Boolean = true,
|
||||
mode: JvmSerializeIrMode,
|
||||
skipExpects: Boolean = false,
|
||||
) : IrFileSerializer(
|
||||
messageLogger, declarationTable, expectDescriptorToSymbol, CompatibilityMode.CURRENT, externallyVisibleOnly, skipExpects
|
||||
messageLogger, declarationTable, expectDescriptorToSymbol, CompatibilityMode.CURRENT,
|
||||
bodiesOnlyForInlines = mode == JvmSerializeIrMode.INLINE,
|
||||
skipExpects
|
||||
) {
|
||||
init {
|
||||
assert(mode != JvmSerializeIrMode.NONE)
|
||||
}
|
||||
|
||||
// Usage protocol: construct an instance, call only one of `serializeIrFile()` and `serializeTopLevelClass()` only once.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user