Write abi version to mapping file

This commit is contained in:
Michael Bogdanov
2015-09-05 14:22:39 +03:00
parent d1964f5ff2
commit 5805c42305
9 changed files with 50 additions and 31 deletions
@@ -21,6 +21,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.io.DataOutputStream;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -28,6 +29,7 @@ import org.jetbrains.annotations.TestOnly;
import org.jetbrains.kotlin.backend.common.output.OutputFile;
import org.jetbrains.kotlin.backend.common.output.OutputFileCollection;
import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.load.java.JvmAbi;
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
import org.jetbrains.kotlin.load.kotlin.PackageParts;
import org.jetbrains.kotlin.name.FqName;
@@ -114,8 +116,12 @@ public class ClassFileFactory implements OutputFileCollection {
@Override
public byte[] asBytes(ClassBuilderFactory factory) {
try {
ByteArrayOutputStream moduleMapping = new ByteArrayOutputStream(1024);
builder.build().writeTo(moduleMapping);
ByteArrayOutputStream moduleMapping = new ByteArrayOutputStream(4*1024);
DataOutputStream dataOutStream = new DataOutputStream(moduleMapping);
dataOutStream.writeInt(1);
dataOutStream.writeInt(JvmAbi.VERSION);
builder.build().writeTo(dataOutStream);
dataOutStream.flush();
return moduleMapping.toByteArray();
}
catch (UnsupportedEncodingException e) {
@@ -38,7 +38,7 @@ private fun List<PackageParts>.addCompiledParts(state: GenerationState): List<Pa
val incrementalCache = state.incrementalCompilationComponents.getIncrementalCache(state.moduleId)
val moduleMappingData = incrementalCache.getModuleMappingData() ?: return this
val mapping = ModuleMapping(moduleMappingData)
val mapping = ModuleMapping.create(moduleMappingData)
incrementalCache.getObsoletePackageParts().forEach {
val i = it.lastIndexOf('/')
@@ -47,7 +47,7 @@ public class JvmPackagePartProvider(val env: KotlinCoreEnvironment) : PackagePar
}.filterNotNull().flatMap {
it.children.filter { it.name.endsWith(ModuleMapping.MAPPING_FILE_EXT) }.toList<VirtualFile>()
}.map {
ModuleMapping(it.contentsToByteArray())
ModuleMapping.create(it.contentsToByteArray())
}
return mappings.map { it.findPackageParts(packageFqName) }.filterNotNull().flatMap { it.parts }.distinct()
@@ -101,7 +101,7 @@ public class IncrementalPackageFragmentProvider(
JetScope.Empty
}
else {
val moduleMapping = incrementalCache.getModuleMappingData()?.let { ModuleMapping(it) }
val moduleMapping = incrementalCache.getModuleMappingData()?.let { ModuleMapping.create(it) }
val actualPackagePartFiles =
moduleMapping?.findPackageParts(fqName.asString())?.let {
@@ -29,7 +29,7 @@ internal class IncrementalPackagePartProvider private constructor(
incrementalCaches: List<IncrementalCache>,
storageManager: StorageManager
) : PackagePartProvider {
private val moduleMappings = storageManager.createLazyValue { incrementalCaches.map { ModuleMapping(it.getModuleMappingData()) } }
private val moduleMappings = storageManager.createLazyValue { incrementalCaches.map { ModuleMapping.create(it.getModuleMappingData()) } }
private val fqNamesToIgnore =
incrementalCaches.flatMap { IncrementalPackageFragmentProvider.fqNamesToLoad(it.getObsoletePackageParts(), sourceFiles).map { it.asString() } }