Remove StringTable.serializeTo, add JvmProtoBufUtil.writeData

StringTable.serializeTo was effectively only used for JvmStringTable,
but was declared in StringTable because of the usage in
DescriptorSerializer.serialize (which, in turn, was only used from JVM
codegen)
This commit is contained in:
Alexander Udalov
2018-03-23 21:20:47 +01:00
parent 58b7643065
commit 52a9cc06e0
7 changed files with 19 additions and 27 deletions
@@ -8,8 +8,11 @@ package org.jetbrains.kotlin.metadata.jvm.deserialization
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.*
import org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf
import org.jetbrains.kotlin.metadata.jvm.serialization.JvmStringTable
import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite
import org.jetbrains.kotlin.protobuf.MessageLite
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.InputStream
object JvmProtoBufUtil {
@@ -46,6 +49,16 @@ object JvmProtoBufUtil {
private fun InputStream.readNameResolver(strings: Array<String>): JvmNameResolver =
JvmNameResolver(JvmProtoBuf.StringTableTypes.parseDelimitedFrom(this, EXTENSION_REGISTRY), strings)
/**
* Serializes [message] and [stringTable] into a string array which must be further written to [Metadata.d1]
*/
@JvmStatic
fun writeData(message: MessageLite, stringTable: JvmStringTable): Array<String> =
BitEncoding.encodeBytes(ByteArrayOutputStream().apply {
stringTable.serializeTo(this)
message.writeTo(this)
}.toByteArray())
// returns JVM signature in the format: "equals(Ljava/lang/Object;)Z"
fun getJvmMethodSignature(
proto: ProtoBuf.Function,
@@ -94,7 +94,7 @@ open class JvmStringTable(nameResolver: JvmNameResolver? = null) : StringTable {
return index
}
override fun serializeTo(output: OutputStream) {
fun serializeTo(output: OutputStream) {
with(JvmProtoBuf.StringTableTypes.newBuilder()) {
addAllRecord(records.map { it.build() })
addAllLocalName(localNames)