Minor, move serializeToByteArray to module 'metadata.jvm'
This commit is contained in:
@@ -32,11 +32,13 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
|||||||
import org.jetbrains.kotlin.descriptors.DescriptorUtilKt;
|
import org.jetbrains.kotlin.descriptors.DescriptorUtilKt;
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion;
|
||||||
import org.jetbrains.kotlin.load.kotlin.ModuleMappingUtilKt;
|
import org.jetbrains.kotlin.load.kotlin.ModuleMappingUtilKt;
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
|
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf;
|
import org.jetbrains.kotlin.metadata.ProtoBuf;
|
||||||
import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf;
|
import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf;
|
||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.ModuleMapping;
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.ModuleMapping;
|
||||||
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.ModuleMappingKt;
|
||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts;
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts;
|
||||||
import org.jetbrains.kotlin.name.ClassId;
|
import org.jetbrains.kotlin.name.ClassId;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
import org.jetbrains.kotlin.name.FqName;
|
||||||
@@ -124,7 +126,7 @@ public class ClassFileFactory implements OutputFileCollection {
|
|||||||
generators.put(outputFilePath, new OutAndSourceFileList(CollectionsKt.toList(packagePartSourceFiles)) {
|
generators.put(outputFilePath, new OutAndSourceFileList(CollectionsKt.toList(packagePartSourceFiles)) {
|
||||||
@Override
|
@Override
|
||||||
public byte[] asBytes(ClassBuilderFactory factory) {
|
public byte[] asBytes(ClassBuilderFactory factory) {
|
||||||
return ClassFileUtilsKt.serializeToByteArray(moduleProto);
|
return ModuleMappingKt.serializeToByteArray(moduleProto, JvmMetadataVersion.INSTANCE.toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,16 +16,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.codegen
|
package org.jetbrains.kotlin.codegen
|
||||||
|
|
||||||
import com.intellij.util.io.DataOutputStream
|
|
||||||
import org.jetbrains.kotlin.backend.common.output.OutputFile
|
import org.jetbrains.kotlin.backend.common.output.OutputFile
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.loadModuleMapping
|
import org.jetbrains.kotlin.load.kotlin.loadModuleMapping
|
||||||
import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf
|
|
||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.ModuleMapping
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.ModuleMapping
|
||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||||
import java.io.ByteArrayOutputStream
|
|
||||||
|
|
||||||
fun ClassFileFactory.getClassFiles(): Iterable<OutputFile> {
|
fun ClassFileFactory.getClassFiles(): Iterable<OutputFile> {
|
||||||
return asList().filterClassFiles()
|
return asList().filterClassFiles()
|
||||||
@@ -57,16 +53,3 @@ private fun Iterable<PackageParts>.addCompiledParts(state: GenerationState): Lis
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun JvmModuleProtoBuf.Module.serializeToByteArray(): ByteArray {
|
|
||||||
val moduleMapping = ByteArrayOutputStream(4096)
|
|
||||||
val out = DataOutputStream(moduleMapping)
|
|
||||||
val version = JvmMetadataVersion.INSTANCE.toArray()
|
|
||||||
out.writeInt(version.size)
|
|
||||||
for (number in version) {
|
|
||||||
out.writeInt(number)
|
|
||||||
}
|
|
||||||
writeTo(out)
|
|
||||||
out.flush()
|
|
||||||
return moduleMapping.toByteArray()
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -23,17 +23,18 @@ import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
|||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.codegen.JvmCodegenUtil
|
import org.jetbrains.kotlin.codegen.JvmCodegenUtil
|
||||||
import org.jetbrains.kotlin.codegen.serializeToByteArray
|
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
|
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf
|
import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts
|
||||||
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.serializeToByteArray
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -125,7 +126,7 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) {
|
|||||||
for (table in packageTable.values) {
|
for (table in packageTable.values) {
|
||||||
table.addTo(this)
|
table.addTo(this)
|
||||||
}
|
}
|
||||||
}.build().serializeToByteArray()
|
}.build().serializeToByteArray(JvmMetadataVersion.INSTANCE.toArray()) // TODO: use another version here, not JVM
|
||||||
|
|
||||||
kotlinModuleFile.parentFile.mkdirs()
|
kotlinModuleFile.parentFile.mkdirs()
|
||||||
kotlinModuleFile.writeBytes(packageTableBytes)
|
kotlinModuleFile.writeBytes(packageTableBytes)
|
||||||
|
|||||||
+13
-3
@@ -7,9 +7,7 @@ package org.jetbrains.kotlin.metadata.jvm.deserialization
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl
|
import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl
|
||||||
import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf
|
import org.jetbrains.kotlin.metadata.jvm.JvmModuleProtoBuf
|
||||||
import java.io.ByteArrayInputStream
|
import java.io.*
|
||||||
import java.io.DataInputStream
|
|
||||||
import java.io.IOException
|
|
||||||
|
|
||||||
class ModuleMapping private constructor(
|
class ModuleMapping private constructor(
|
||||||
val packageFqName2Parts: Map<String, PackageParts>,
|
val packageFqName2Parts: Map<String, PackageParts>,
|
||||||
@@ -210,3 +208,15 @@ class PackageParts(val packageFqName: String) {
|
|||||||
override fun toString() =
|
override fun toString() =
|
||||||
(parts + metadataParts).toString()
|
(parts + metadataParts).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun JvmModuleProtoBuf.Module.serializeToByteArray(versionArray: IntArray): ByteArray {
|
||||||
|
val moduleMapping = ByteArrayOutputStream(4096)
|
||||||
|
val out = DataOutputStream(moduleMapping)
|
||||||
|
out.writeInt(versionArray.size)
|
||||||
|
for (number in versionArray) {
|
||||||
|
out.writeInt(number)
|
||||||
|
}
|
||||||
|
writeTo(out)
|
||||||
|
out.flush()
|
||||||
|
return moduleMapping.toByteArray()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user