mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
create appropriate string serializator for JPS cache during init
GitOrigin-RevId: 3e7db0a60388b08afd78a1673d66c65809d295e7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6f361d1a81
commit
80cad407f0
@@ -2692,7 +2692,7 @@ f:org.jetbrains.jps.incremental.storage.OneToManyPathsMapping
|
||||
- <init>(java.io.File,org.jetbrains.jps.incremental.relativizer.PathRelativizerService):V
|
||||
- appendData(java.lang.String,java.lang.String):V
|
||||
- appendData(java.lang.String,java.util.Collection):V
|
||||
- getKeys():java.util.Collection
|
||||
- getKeys():java.util.List
|
||||
- getKeysIterator():java.util.Iterator
|
||||
- getState(java.lang.String):java.util.Collection
|
||||
- getStateIterator(java.lang.String):java.util.Iterator
|
||||
|
||||
@@ -19,7 +19,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.builders.storage.BuildDataCorruptedException;
|
||||
import org.jetbrains.jps.incremental.Utils;
|
||||
import org.jetbrains.jps.incremental.relativizer.PathRelativizerService;
|
||||
import org.jetbrains.jps.incremental.storage.PathStringDescriptor;
|
||||
import org.jetbrains.jps.incremental.storage.PathStringDescriptors;
|
||||
import org.jetbrains.jps.javac.Iterators;
|
||||
import org.jetbrains.jps.service.JpsServiceManager;
|
||||
import org.jetbrains.org.objectweb.asm.ClassReader;
|
||||
@@ -169,7 +169,7 @@ public class Mappings {
|
||||
DependencyContext.getTableFile(myRootDir, SHORT_NAMES), EnumeratorIntegerDescriptor.INSTANCE
|
||||
);
|
||||
myRelativeSourceFilePathToClasses = new ObjectObjectPersistentMultiMaplet<String, ClassFileRepr>(
|
||||
DependencyContext.getTableFile(myRootDir, SOURCE_TO_CLASS), PathStringDescriptor.INSTANCE, new ClassFileReprExternalizer(myContext),
|
||||
DependencyContext.getTableFile(myRootDir, SOURCE_TO_CLASS), PathStringDescriptors.createPathStringDescriptor(), new ClassFileReprExternalizer(myContext),
|
||||
() -> new HashSet<>(5, DEFAULT_SET_LOAD_FACTOR)
|
||||
) {
|
||||
@Override
|
||||
@@ -179,7 +179,7 @@ public class Mappings {
|
||||
}
|
||||
};
|
||||
myClassToRelativeSourceFilePath = new IntObjectPersistentMultiMaplet<>(
|
||||
DependencyContext.getTableFile(myRootDir, CLASS_TO_SOURCE), EnumeratorIntegerDescriptor.INSTANCE, PathStringDescriptor.INSTANCE, fileCollectionFactory
|
||||
DependencyContext.getTableFile(myRootDir, CLASS_TO_SOURCE), EnumeratorIntegerDescriptor.INSTANCE, PathStringDescriptors.createPathStringDescriptor(), fileCollectionFactory
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.incremental.relativizer.PathRelativizerService;
|
||||
import org.jetbrains.jps.incremental.storage.AbstractStateStorage;
|
||||
import org.jetbrains.jps.incremental.storage.PathStringDescriptor;
|
||||
import org.jetbrains.jps.incremental.storage.PathStringDescriptors;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
@@ -23,7 +23,7 @@ public final class ArtifactOutputToSourceMapping
|
||||
private final PathRelativizerService myRelativizer;
|
||||
|
||||
public ArtifactOutputToSourceMapping(File storePath, PathRelativizerService relativizer) throws IOException {
|
||||
super(storePath, PathStringDescriptor.INSTANCE, new SourcePathListExternalizer());
|
||||
super(storePath, PathStringDescriptors.createPathStringDescriptor(), new SourcePathListExternalizer());
|
||||
myRelativizer = relativizer;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ package org.jetbrains.jps.incremental.storage;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.io.IOUtil;
|
||||
import com.intellij.util.io.KeyDescriptor;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.DataInput;
|
||||
@@ -12,8 +11,7 @@ import java.io.DataOutput;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final class FileKeyDescriptor implements KeyDescriptor<File> {
|
||||
final class FileKeyDescriptor implements KeyDescriptor<File> {
|
||||
@Override
|
||||
public void save(@NotNull DataOutput out, File value) throws IOException {
|
||||
IOUtil.writeUTF(out, value.getPath());
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.jps.incremental.storage
|
||||
|
||||
import com.dynatrace.hash4j.hashing.Hashing
|
||||
import com.intellij.util.ArrayUtil
|
||||
import com.intellij.util.io.DataExternalizer
|
||||
import com.intellij.util.io.EnumeratorStringDescriptor
|
||||
import com.intellij.util.io.PersistentMapBuilder
|
||||
import org.jetbrains.jps.builders.BuildTarget
|
||||
import org.jetbrains.jps.incremental.FSOperations
|
||||
@@ -139,10 +137,4 @@ private object StateExternalizer : DataExternalizer<Array<HashStampPerTarget>> {
|
||||
HashStampPerTarget(targetId = id, hash = hash, timestamp = timestamp)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private object JpsCachePathStringDescriptor : EnumeratorStringDescriptor() {
|
||||
override fun getHashCode(value: String): Int = Hashing.komihash5_0().hashCharsToInt(value)
|
||||
|
||||
override fun isEqual(val1: String, val2: String) = val1 == val2
|
||||
}
|
||||
@@ -19,7 +19,7 @@ public final class OneToManyPathsMapping extends AbstractStateStorage<String, Co
|
||||
private final PathRelativizerService relativizer;
|
||||
|
||||
public OneToManyPathsMapping(File storePath, PathRelativizerService relativizer) throws IOException {
|
||||
super(storePath, PathStringDescriptor.INSTANCE, new PathCollectionExternalizer());
|
||||
super(storePath, PathStringDescriptors.createPathStringDescriptor(), new PathCollectionExternalizer());
|
||||
this.relativizer = relativizer;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,35 +1,27 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.jps.incremental.storage;
|
||||
@file:JvmName("PathStringDescriptors")
|
||||
package org.jetbrains.jps.incremental.storage
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.util.text.Strings;
|
||||
import com.intellij.util.io.EnumeratorStringDescriptor;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import static org.jetbrains.jps.incremental.storage.ProjectStamps.PORTABLE_CACHES;
|
||||
import com.dynatrace.hash4j.hashing.Hashing
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.util.io.FileUtilRt
|
||||
import com.intellij.util.io.EnumeratorStringDescriptor
|
||||
import com.intellij.util.io.KeyDescriptor
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final class PathStringDescriptor extends EnumeratorStringDescriptor {
|
||||
public static final PathStringDescriptor INSTANCE = new PathStringDescriptor();
|
||||
|
||||
@Override
|
||||
public int getHashCode(String value) {
|
||||
if (!PORTABLE_CACHES) return FileUtil.pathHashCode(value);
|
||||
// On case insensitive OS hash calculated from value converted to lower case
|
||||
return StringUtil.isEmpty(value) ? 0 : FileUtil.toCanonicalPath(value).hashCode();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEqual(String val1, String val2) {
|
||||
if (!PORTABLE_CACHES) return FileUtil.pathsEqual(val1, val2);
|
||||
// On case insensitive OS hash calculated from path converted to lower case
|
||||
if (Strings.areSameInstance(val1, val2)) return true;
|
||||
if (val1 == null || val2 == null) return false;
|
||||
|
||||
String path1 = FileUtil.toCanonicalPath(val1);
|
||||
String path2 = FileUtil.toCanonicalPath(val2);
|
||||
return path1.equals(path2);
|
||||
}
|
||||
fun createPathStringDescriptor(): KeyDescriptor<String> {
|
||||
return if (ProjectStamps.PORTABLE_CACHES) JpsCachePathStringDescriptor else PathStringDescriptor
|
||||
}
|
||||
|
||||
private object PathStringDescriptor : EnumeratorStringDescriptor() {
|
||||
override fun getHashCode(value: String?): Int = FileUtilRt.pathHashCode(value)
|
||||
|
||||
override fun isEqual(val1: String?, val2: String?): Boolean = FileUtil.pathsEqual(val1, val2)
|
||||
}
|
||||
|
||||
internal object JpsCachePathStringDescriptor : EnumeratorStringDescriptor() {
|
||||
override fun getHashCode(value: String): Int = Hashing.komihash5_0().hashCharsToInt(value)
|
||||
|
||||
override fun isEqual(val1: String, val2: String) = val1 == val2
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.jps.builders.java
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
@@ -22,7 +22,7 @@ import org.jetbrains.jps.incremental.CompileContext
|
||||
import org.jetbrains.jps.incremental.ModuleBuildTarget
|
||||
import org.jetbrains.jps.incremental.ModuleLevelBuilder
|
||||
import org.jetbrains.jps.incremental.storage.AbstractStateStorage
|
||||
import org.jetbrains.jps.incremental.storage.PathStringDescriptor
|
||||
import org.jetbrains.jps.incremental.storage.createPathStringDescriptor
|
||||
import org.jetbrains.jps.model.java.LanguageLevel
|
||||
import org.jetbrains.org.objectweb.asm.ClassReader
|
||||
import java.io.File
|
||||
@@ -35,7 +35,7 @@ import java.util.regex.Pattern
|
||||
* which references all classes from that package. Package name is derived from 'package <name>;' statement from a file or set to empty
|
||||
* if no such statement is found
|
||||
*/
|
||||
class MockPackageFacadeGenerator : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
|
||||
internal class MockPackageFacadeGenerator : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
|
||||
override fun build(context: CompileContext,
|
||||
chunk: ModuleChunk,
|
||||
dirtyFilesHolder: DirtyFilesHolder<JavaSourceRootDescriptor, ModuleBuildTarget>,
|
||||
@@ -159,7 +159,7 @@ class MockPackageFacadeGenerator : ModuleLevelBuilder(BuilderCategory.SOURCE_PRO
|
||||
private val PACKAGE_CACHE_STORAGE_PROVIDER = object : StorageProvider<AbstractStateStorage<String, String>>() {
|
||||
override fun createStorage(targetDataDir: File): AbstractStateStorage<String, String> {
|
||||
val storageFile = File(targetDataDir, "mockPackageFacade/packages")
|
||||
return object : AbstractStateStorage<String, String>(storageFile, PathStringDescriptor(), EnumeratorStringDescriptor()) {
|
||||
return object : AbstractStateStorage<String, String>(storageFile, createPathStringDescriptor(), EnumeratorStringDescriptor()) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user