@@ -25,9 +25,15 @@ import org.jetbrains.jps.incremental.storage.BuildDataManager
|
|||||||
import org.jetbrains.jps.incremental.storage.StorageOwner
|
import org.jetbrains.jps.incremental.storage.StorageOwner
|
||||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||||
import org.jetbrains.kotlin.incremental.*
|
import org.jetbrains.kotlin.incremental.*
|
||||||
import org.jetbrains.kotlin.incremental.storage.*
|
import org.jetbrains.kotlin.incremental.storage.BasicMap
|
||||||
|
import org.jetbrains.kotlin.incremental.storage.BasicStringMap
|
||||||
|
import org.jetbrains.kotlin.incremental.storage.StringCollectionExternalizer
|
||||||
|
import org.jetbrains.kotlin.incremental.storage.StringToLongMapExternalizer
|
||||||
import org.jetbrains.kotlin.inline.inlineFunctionsJvmNames
|
import org.jetbrains.kotlin.inline.inlineFunctionsJvmNames
|
||||||
import org.jetbrains.kotlin.jps.build.KotlinBuilder
|
import org.jetbrains.kotlin.jps.build.KotlinBuilder
|
||||||
|
import org.jetbrains.kotlin.jps.incremental.storages.PathCollectionExternalizer
|
||||||
|
import org.jetbrains.kotlin.jps.incremental.storages.PathFunctionPair
|
||||||
|
import org.jetbrains.kotlin.jps.incremental.storages.PathFunctionPairKeyDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||||
import org.jetbrains.org.objectweb.asm.*
|
import org.jetbrains.org.objectweb.asm.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -179,7 +185,7 @@ class JpsIncrementalCacheImpl(
|
|||||||
* * inlineFunction - jvmSignature of some inline function in source file
|
* * inlineFunction - jvmSignature of some inline function in source file
|
||||||
* * target files - collection of files inlineFunction has been inlined to
|
* * target files - collection of files inlineFunction has been inlined to
|
||||||
*/
|
*/
|
||||||
private inner class InlineFunctionsFilesMap(storageFile: File) : BasicMap<PathFunctionPair, Collection<String>>(storageFile, PathFunctionPairKeyDescriptor, PathStringCollectionExternalizer) {
|
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, targetPath)
|
storage.append(key, targetPath)
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2016 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.storages
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
|
import com.intellij.util.io.IOUtil
|
||||||
|
import com.intellij.util.io.KeyDescriptor
|
||||||
|
import gnu.trove.THashSet
|
||||||
|
import org.jetbrains.jps.incremental.storage.PathStringDescriptor
|
||||||
|
import org.jetbrains.kotlin.incremental.storage.CollectionExternalizer
|
||||||
|
import java.io.DataInput
|
||||||
|
import java.io.DataOutput
|
||||||
|
|
||||||
|
object PathFunctionPairKeyDescriptor : KeyDescriptor<PathFunctionPair> {
|
||||||
|
override fun read(input: DataInput): PathFunctionPair {
|
||||||
|
val path = IOUtil.readUTF(input)
|
||||||
|
val function = IOUtil.readUTF(input)
|
||||||
|
return PathFunctionPair(path, function)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun save(output: DataOutput, value: PathFunctionPair) {
|
||||||
|
IOUtil.writeUTF(output, value.path)
|
||||||
|
IOUtil.writeUTF(output, value.function)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getHashCode(value: PathFunctionPair): Int = value.hashCode()
|
||||||
|
|
||||||
|
override fun isEqual(val1: PathFunctionPair, val2: PathFunctionPair): Boolean = val1 == val2
|
||||||
|
}
|
||||||
|
|
||||||
|
object PathCollectionExternalizer : CollectionExternalizer<String>(PathStringDescriptor(), { THashSet(FileUtil.PATH_HASHING_STRATEGY) })
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2016 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.storages
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
|
|
||||||
|
class PathFunctionPair(
|
||||||
|
val path: String,
|
||||||
|
val function: String
|
||||||
|
): Comparable<PathFunctionPair> {
|
||||||
|
override fun compareTo(other: PathFunctionPair): Int {
|
||||||
|
val pathComp = FileUtil.comparePaths(path, other.path)
|
||||||
|
|
||||||
|
if (pathComp != 0) return pathComp
|
||||||
|
|
||||||
|
return function.compareTo(other.function)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean =
|
||||||
|
when (other) {
|
||||||
|
is PathFunctionPair ->
|
||||||
|
FileUtil.pathsEqual(path, other.path) && function == other.function
|
||||||
|
else ->
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int = 31 * FileUtil.pathHashCode(path) + function.hashCode()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user