Append in a more safe way
This commit is contained in:
@@ -21,7 +21,6 @@ import com.intellij.openapi.util.io.FileUtil
|
|||||||
import com.intellij.openapi.util.io.FileUtil.toSystemIndependentName
|
import com.intellij.openapi.util.io.FileUtil.toSystemIndependentName
|
||||||
import com.intellij.util.io.BooleanDataDescriptor
|
import com.intellij.util.io.BooleanDataDescriptor
|
||||||
import com.intellij.util.io.EnumeratorStringDescriptor
|
import com.intellij.util.io.EnumeratorStringDescriptor
|
||||||
import com.intellij.util.io.IOUtil
|
|
||||||
import gnu.trove.THashSet
|
import gnu.trove.THashSet
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.jps.builders.storage.BuildDataPaths
|
import org.jetbrains.jps.builders.storage.BuildDataPaths
|
||||||
@@ -581,7 +580,7 @@ class IncrementalCacheImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun add(sourceFile: File, className: JvmClassName) {
|
fun add(sourceFile: File, className: JvmClassName) {
|
||||||
storage.append(sourceFile.absolutePath, { out -> IOUtil.writeUTF(out, className.internalName) })
|
storage.append(sourceFile.absolutePath, className.internalName)
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun get(sourceFile: File): Collection<JvmClassName> =
|
operator fun get(sourceFile: File): Collection<JvmClassName> =
|
||||||
@@ -684,9 +683,7 @@ class IncrementalCacheImpl(
|
|||||||
private inner class InlineFunctionsFilesMap(storageFile: File) : BasicMap<PathFunctionPair, Collection<String>>(storageFile, PathFunctionPairKeyDescriptor, PathCollectionExternalizer) {
|
private inner class InlineFunctionsFilesMap(storageFile: File) : BasicMap<PathFunctionPair, Collection<String>>(storageFile, PathFunctionPairKeyDescriptor, PathCollectionExternalizer) {
|
||||||
fun add(sourcePath: String, jvmSignature: String, targetPath: String) {
|
fun add(sourcePath: String, jvmSignature: String, targetPath: String) {
|
||||||
val key = PathFunctionPair(sourcePath, jvmSignature)
|
val key = PathFunctionPair(sourcePath, jvmSignature)
|
||||||
storage.append(key) { out ->
|
storage.append(key, targetPath)
|
||||||
IOUtil.writeUTF(out, targetPath)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun get(sourcePath: String, jvmSignature: String): Collection<String> {
|
operator fun get(sourcePath: String, jvmSignature: String): Collection<String> {
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.jps.incremental.storage
|
package org.jetbrains.kotlin.jps.incremental.storage
|
||||||
|
|
||||||
import com.intellij.util.io.IOUtil
|
|
||||||
import org.jetbrains.kotlin.jps.incremental.dumpCollection
|
import org.jetbrains.kotlin.jps.incremental.dumpCollection
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -27,7 +26,7 @@ internal open class ClassOneToManyMap(
|
|||||||
override fun dumpValue(value: Collection<String>): String = value.dumpCollection()
|
override fun dumpValue(value: Collection<String>): String = value.dumpCollection()
|
||||||
|
|
||||||
fun add(key: FqName, value: FqName) {
|
fun add(key: FqName, value: FqName) {
|
||||||
storage.append(key.asString()) { out -> IOUtil.writeUTF(out, value.asString()) }
|
storage.append(key.asString(), value.asString())
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun get(key: FqName): Collection<FqName> =
|
operator fun get(key: FqName): Collection<FqName> =
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.jps.incremental.storage
|
package org.jetbrains.kotlin.jps.incremental.storage
|
||||||
|
|
||||||
import com.intellij.util.io.DataExternalizer
|
import com.intellij.util.io.DataExternalizer
|
||||||
|
import com.intellij.util.io.IOUtil
|
||||||
import com.intellij.util.io.KeyDescriptor
|
import com.intellij.util.io.KeyDescriptor
|
||||||
import com.intellij.util.io.PersistentHashMap
|
import com.intellij.util.io.PersistentHashMap
|
||||||
import java.io.DataOutput
|
import java.io.DataOutput
|
||||||
@@ -73,8 +74,12 @@ internal class LazyStorage<K, V>(
|
|||||||
getStorageIfExists()?.remove(key)
|
getStorageIfExists()?.remove(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun append(key: K, append: (DataOutput)->Unit) {
|
fun append(key: K, value: String) {
|
||||||
getStorageOrCreateNew().appendData(key, append)
|
append(key) { out -> IOUtil.writeUTF(out, value) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun append(key: K, value: Int) {
|
||||||
|
append(key) { out -> out.writeInt(value) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
@@ -110,4 +115,8 @@ internal class LazyStorage<K, V>(
|
|||||||
|
|
||||||
private fun createMap(): PersistentHashMap<K, V> =
|
private fun createMap(): PersistentHashMap<K, V> =
|
||||||
PersistentHashMap(storageFile, keyDescriptor, valueExternalizer)
|
PersistentHashMap(storageFile, keyDescriptor, valueExternalizer)
|
||||||
|
|
||||||
|
private fun append(key: K, append: (DataOutput)->Unit) {
|
||||||
|
getStorageOrCreateNew().appendData(key, append)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ internal class LookupMap(storage: File) : BasicMap<LookupSymbolKey, Collection<I
|
|||||||
override fun dumpValue(value: Collection<Int>): String = value.toString()
|
override fun dumpValue(value: Collection<Int>): String = value.toString()
|
||||||
|
|
||||||
fun add(name: String, scope: String, fileId: Int) {
|
fun add(name: String, scope: String, fileId: Int) {
|
||||||
storage.append(LookupSymbolKey(name, scope)) { out -> out.writeInt(fileId) }
|
storage.append(LookupSymbolKey(name, scope), fileId)
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun get(key: LookupSymbolKey): Collection<Int>? = storage[key]
|
operator fun get(key: LookupSymbolKey): Collection<Int>? = storage[key]
|
||||||
|
|||||||
Reference in New Issue
Block a user