Extract BasicMapsOwner
This commit is contained in:
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2015 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.jps.incremental
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.TestOnly
|
||||||
|
import org.jetbrains.jps.incremental.storage.StorageOwner
|
||||||
|
import org.jetbrains.kotlin.jps.incremental.storage.BasicMap
|
||||||
|
|
||||||
|
open class BasicMapsOwner : StorageOwner {
|
||||||
|
private val maps = arrayListOf<BasicMap<*, *>>()
|
||||||
|
|
||||||
|
protected fun <K, V, M : BasicMap<K, V>> registerMap(map: M): M {
|
||||||
|
maps.add(map)
|
||||||
|
return map
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun clean() {
|
||||||
|
maps.forEach { it.clean() }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun close() {
|
||||||
|
maps.forEach { it.close() }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun flush(memoryCachesOnly: Boolean) {
|
||||||
|
maps.forEach { it.flush(memoryCachesOnly) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestOnly
|
||||||
|
public fun dump(): String = maps.map { it.dump() }.joinToString("\n\n")
|
||||||
|
}
|
||||||
@@ -26,7 +26,6 @@ import org.jetbrains.jps.builders.storage.StorageProvider
|
|||||||
import org.jetbrains.jps.incremental.ModuleBuildTarget
|
import org.jetbrains.jps.incremental.ModuleBuildTarget
|
||||||
import org.jetbrains.jps.incremental.storage.BuildDataManager
|
import org.jetbrains.jps.incremental.storage.BuildDataManager
|
||||||
import org.jetbrains.jps.incremental.storage.PathStringDescriptor
|
import org.jetbrains.jps.incremental.storage.PathStringDescriptor
|
||||||
import org.jetbrains.jps.incremental.storage.StorageOwner
|
|
||||||
import org.jetbrains.kotlin.inline.inlineFunctionsJvmNames
|
import org.jetbrains.kotlin.inline.inlineFunctionsJvmNames
|
||||||
import org.jetbrains.kotlin.jps.build.GeneratedJvmClass
|
import org.jetbrains.kotlin.jps.build.GeneratedJvmClass
|
||||||
import org.jetbrains.kotlin.jps.build.KotlinBuilder
|
import org.jetbrains.kotlin.jps.build.KotlinBuilder
|
||||||
@@ -37,7 +36,6 @@ import org.jetbrains.kotlin.load.kotlin.header.*
|
|||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName.byInternalName
|
|
||||||
import org.jetbrains.kotlin.serialization.jvm.BitEncoding
|
import org.jetbrains.kotlin.serialization.jvm.BitEncoding
|
||||||
import org.jetbrains.org.objectweb.asm.*
|
import org.jetbrains.org.objectweb.asm.*
|
||||||
import java.io.DataInput
|
import java.io.DataInput
|
||||||
@@ -56,9 +54,9 @@ public fun getCacheDirectoryName(): String =
|
|||||||
public class IncrementalCacheImpl(
|
public class IncrementalCacheImpl(
|
||||||
targetDataRoot: File,
|
targetDataRoot: File,
|
||||||
private val target: ModuleBuildTarget
|
private val target: ModuleBuildTarget
|
||||||
) : StorageOwner, IncrementalCache {
|
) : BasicMapsOwner(), IncrementalCache {
|
||||||
companion object {
|
companion object {
|
||||||
val CACHE_EXTENSION = "tab"
|
val CACHE_EXTENSION = ".tab"
|
||||||
|
|
||||||
val PROTO_MAP = "proto"
|
val PROTO_MAP = "proto"
|
||||||
val CONSTANTS_MAP = "constants"
|
val CONSTANTS_MAP = "constants"
|
||||||
@@ -75,15 +73,9 @@ public class IncrementalCacheImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val baseDir = File(targetDataRoot, CACHE_DIRECTORY_NAME)
|
private val baseDir = File(targetDataRoot, CACHE_DIRECTORY_NAME)
|
||||||
private val maps = arrayListOf<BasicMap<*, *>>()
|
|
||||||
|
|
||||||
private val String.storageFile: File
|
private val String.storageFile: File
|
||||||
get() = File(baseDir, this + "." + CACHE_EXTENSION)
|
get() = File(baseDir, this + CACHE_EXTENSION)
|
||||||
|
|
||||||
private fun <K, V, M : BasicMap<K, V>> registerMap(map: M): M {
|
|
||||||
maps.add(map)
|
|
||||||
return map
|
|
||||||
}
|
|
||||||
|
|
||||||
private val protoMap = registerMap(ProtoMap(PROTO_MAP.storageFile))
|
private val protoMap = registerMap(ProtoMap(PROTO_MAP.storageFile))
|
||||||
private val constantsMap = registerMap(ConstantsMap(CONSTANTS_MAP.storageFile))
|
private val constantsMap = registerMap(ConstantsMap(CONSTANTS_MAP.storageFile))
|
||||||
@@ -108,11 +100,6 @@ public class IncrementalCacheImpl(
|
|||||||
dependents.add(cache)
|
dependents.add(cache)
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestOnly
|
|
||||||
public fun dump(): String {
|
|
||||||
return maps.joinToString("\n\n") { it.dump() }
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun markOutputClassesDirty(removedAndCompiledSources: List<File>) {
|
public fun markOutputClassesDirty(removedAndCompiledSources: List<File>) {
|
||||||
for (sourceFile in removedAndCompiledSources) {
|
for (sourceFile in removedAndCompiledSources) {
|
||||||
val classes = sourceToClassesMap[sourceFile]
|
val classes = sourceToClassesMap[sourceFile]
|
||||||
@@ -278,19 +265,11 @@ public class IncrementalCacheImpl(
|
|||||||
return protoMap[JvmClassName.byInternalName(MODULE_MAPPING_FILE_NAME)]?.bytes
|
return protoMap[JvmClassName.byInternalName(MODULE_MAPPING_FILE_NAME)]?.bytes
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun flush(memoryCachesOnly: Boolean) {
|
|
||||||
maps.forEach { it.flush(memoryCachesOnly) }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override fun clean() {
|
public override fun clean() {
|
||||||
maps.forEach { it.clean() }
|
super.clean()
|
||||||
cacheFormatVersion.clean()
|
cacheFormatVersion.clean()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override fun close() {
|
|
||||||
maps.forEach { it.close () }
|
|
||||||
}
|
|
||||||
|
|
||||||
private inner class ProtoMap(storageFile: File) : BasicStringMap<ProtoMapValue>(storageFile, ProtoMapValueExternalizer) {
|
private inner class ProtoMap(storageFile: File) : BasicStringMap<ProtoMapValue>(storageFile, ProtoMapValueExternalizer) {
|
||||||
|
|
||||||
public fun process(kotlinClass: LocalFileKotlinClass, isPackage: Boolean, checkChangesIsOpenPart: Boolean = true): ChangesInfo {
|
public fun process(kotlinClass: LocalFileKotlinClass, isPackage: Boolean, checkChangesIsOpenPart: Boolean = true): ChangesInfo {
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.jps.incremental
|
package org.jetbrains.kotlin.jps.incremental
|
||||||
|
|
||||||
import org.jetbrains.jps.builders.storage.StorageProvider
|
import org.jetbrains.jps.builders.storage.StorageProvider
|
||||||
import org.jetbrains.jps.incremental.storage.StorageOwner
|
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
import org.jetbrains.kotlin.incremental.components.ScopeKind
|
||||||
import org.jetbrains.kotlin.jps.incremental.storage.LookupMap
|
import org.jetbrains.kotlin.jps.incremental.storage.LookupMap
|
||||||
@@ -27,8 +26,11 @@ object LOOKUP_TRACKER_STORAGE_PROVIDER : StorageProvider<LookupTrackerImpl>() {
|
|||||||
override fun createStorage(targetDataDir: File): LookupTrackerImpl = LookupTrackerImpl(targetDataDir)
|
override fun createStorage(targetDataDir: File): LookupTrackerImpl = LookupTrackerImpl(targetDataDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
class LookupTrackerImpl(targetDataDir: File) : LookupTracker, StorageOwner {
|
class LookupTrackerImpl(private val targetDataDir: File) : BasicMapsOwner(), LookupTracker {
|
||||||
private val lookupMap = LookupMap(File(targetDataDir, "lookups.tab"))
|
private val String.storageFile: File
|
||||||
|
get() = File(targetDataDir, this + IncrementalCacheImpl.CACHE_EXTENSION)
|
||||||
|
|
||||||
|
private val lookupMap = registerMap(LookupMap("lookups".storageFile))
|
||||||
|
|
||||||
override fun record(lookupContainingFile: String, lookupLine: Int?, lookupColumn: Int?, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
override fun record(lookupContainingFile: String, lookupLine: Int?, lookupColumn: Int?, scopeFqName: String, scopeKind: ScopeKind, name: String) {
|
||||||
lookupMap.add(name, scopeFqName, lookupContainingFile)
|
lookupMap.add(name, scopeFqName, lookupContainingFile)
|
||||||
|
|||||||
Reference in New Issue
Block a user