JS: (review fix) Header -> InlineData

This commit is contained in:
Anton Bannykh
2019-02-11 21:28:50 +03:00
parent 0fa87e3baa
commit 4b39e2df12
16 changed files with 157 additions and 158 deletions
@@ -194,21 +194,21 @@ class K2JSTranslator @JvmOverloads constructor(
metadataVersion ?: JsMetadataVersion.INSTANCE
)
val header = serializeHeader(fileTranslationResult.inlineFunctionTags)
val inlineData = serializeInlineData(fileTranslationResult.inlineFunctionTags)
val ioFile = VfsUtilCore.virtualToIoFile(file.virtualFile)
incrementalResults?.processPackagePart(ioFile, packagePart.toByteArray(), binaryAst, header)
incrementalResults?.processPackagePart(ioFile, packagePart.toByteArray(), binaryAst, inlineData)
}
val settings = config.configuration.languageVersionSettings
incrementalResults?.processHeader(KotlinJavascriptSerializationUtil.serializeHeader(moduleDescriptor, null, settings).toByteArray())
}
private fun serializeHeader(importedTags: Set<String>): ByteArray {
private fun serializeInlineData(importedTags: Set<String>): ByteArray {
val output = ByteArrayOutputStream()
val headerBuilder = JsAstProtoBuf.Header.newBuilder()
headerBuilder.addAllInlineFunctionTags(importedTags)
headerBuilder.build().writeTo(output)
val inlineDataBuilder = JsAstProtoBuf.InlineData.newBuilder()
inlineDataBuilder.addAllInlineFunctionTags(importedTags)
inlineDataBuilder.build().writeTo(output)
return output.toByteArray()
}
@@ -21,5 +21,5 @@ import org.jetbrains.kotlin.psi.KtFile
sealed class TranslationUnit {
class SourceFile(val file: KtFile) : TranslationUnit()
class BinaryAst(val data: ByteArray, val header: ByteArray) : TranslationUnit()
class BinaryAst(val data: ByteArray, val inlineData: ByteArray) : TranslationUnit()
}
@@ -50,12 +50,11 @@ class AstGenerationResult(
is TranslationUnit.SourceFile -> translatedSourceFiles[unit]!!
is TranslationUnit.BinaryAst -> cache.getOrPut(unit) {
// TODO Don't deserialize header twice
val headerData = unit.header
val header = JsAstProtoBuf.Header.parseFrom(CodedInputStream.newInstance(headerData))
val inlineData = JsAstProtoBuf.InlineData.parseFrom(CodedInputStream.newInstance(unit.inlineData))
DeserializedFileTranslationResult(
deserializer.deserialize(ByteArrayInputStream(unit.data)),
HashSet(header.inlineFunctionTagsList)
HashSet(inlineData.inlineFunctionTagsList)
)
}
}
@@ -347,8 +347,8 @@ public final class Translation {
translatedSourceFiles.put(sourceFileUnit, new SourceFileTranslationResult(fragment, staticContext.getInlineFunctionTags(), fileMemberScope));
}
else if (unit instanceof TranslationUnit.BinaryAst) {
byte[] headerData = ((TranslationUnit.BinaryAst) unit).getHeader();
JsAstProtoBuf.Header h = JsAstProtoBuf.Header.parseFrom(CodedInputStream.newInstance(headerData));
byte[] inlineDataArray = ((TranslationUnit.BinaryAst) unit).getInlineData();
JsAstProtoBuf.InlineData h = JsAstProtoBuf.InlineData.parseFrom(CodedInputStream.newInstance(inlineDataArray));
for (String tag : h.getInlineFunctionTagsList()) {
assert !inlineFunctionTagMap.containsKey(tag) : "Duplicate inline function tag found: '" + tag + "'";
inlineFunctionTagMap.put(tag, unit);