[JS IR BE] Split IrModule/IrFile serializers
This commit is contained in:
+29
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.backend.common.serialization
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.LoggingContext
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
|
import org.jetbrains.kotlin.library.IrIrSerializedIrFile
|
||||||
|
import org.jetbrains.kotlin.library.SerializedIrModule
|
||||||
|
|
||||||
|
abstract class IrModuleSerializer<F : IrFileSerializer>(protected val logger: LoggingContext,
|
||||||
|
protected val mangler: KotlinMangler,
|
||||||
|
protected val declarationTable: DeclarationTable) {
|
||||||
|
|
||||||
|
|
||||||
|
abstract fun createSerializerForFile(file: IrFile): F
|
||||||
|
|
||||||
|
private fun serializeIrFile(file: IrFile): IrIrSerializedIrFile {
|
||||||
|
val fileSerializer = createSerializerForFile(file)
|
||||||
|
return fileSerializer.serializeIrFile(file)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun serializedIrModule(module: IrModuleFragment): SerializedIrModule {
|
||||||
|
return SerializedIrModule(module.files.map { serializeIrFile(it) })
|
||||||
|
}
|
||||||
|
}
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.backend.common.LoggingContext
|
||||||
|
import org.jetbrains.kotlin.backend.common.serialization.IrFileSerializer
|
||||||
|
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
|
||||||
|
|
||||||
|
class JsIrFileSerializer(
|
||||||
|
logger: LoggingContext,
|
||||||
|
declarationTable: DeclarationTable,
|
||||||
|
bodiesOnlyForInlines: Boolean = false
|
||||||
|
) : IrFileSerializer(logger, declarationTable, JsMangler, bodiesOnlyForInlines)
|
||||||
+8
-6
@@ -7,10 +7,12 @@ package org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.LoggingContext
|
import org.jetbrains.kotlin.backend.common.LoggingContext
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer
|
import org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
|
import org.jetbrains.kotlin.backend.common.serialization.KotlinMangler
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
|
|
||||||
class JsIrModuleSerializer(
|
class JsIrModuleSerializer(logger: LoggingContext, declarationTable: JsDeclarationTable) :
|
||||||
logger: LoggingContext,
|
IrModuleSerializer<JsIrFileSerializer>(logger, JsMangler, declarationTable) {
|
||||||
declarationTable: DeclarationTable,
|
|
||||||
bodiesOnlyForInlines: Boolean = false
|
|
||||||
) : IrModuleSerializer(logger, declarationTable, JsMangler, bodiesOnlyForInlines)
|
override fun createSerializerForFile(file: IrFile): JsIrFileSerializer = JsIrFileSerializer(logger, declarationTable)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user