use new forward index in javac indices

This commit is contained in:
Dmitry Batkovich
2019-03-13 14:24:41 +03:00
parent b38361b27a
commit 4a11c7e2d6
3 changed files with 12 additions and 12 deletions
@@ -12,6 +12,8 @@ import com.intellij.util.indexing.IndexExtension;
import com.intellij.util.indexing.IndexId;
import com.intellij.util.indexing.InvertedIndex;
import com.intellij.util.indexing.impl.*;
import com.intellij.util.indexing.impl.forward.KeyCollectionForwardIndexAccessor;
import com.intellij.util.indexing.impl.forward.PersistentMapBasedForwardIndex;
import com.intellij.util.io.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.backwardRefs.NameEnumerator;
@@ -198,6 +200,7 @@ public class CompilerReferenceIndex<Input> {
public void setRebuildRequestCause(Throwable e) {
myRebuildRequestCause = e;
LOG.error(e);
}
private static void close(InvertedIndex<?, ?, ?> index, CommonProcessors.FindFirstProcessor<Exception> exceptionProcessor) {
@@ -231,17 +234,8 @@ public class CompilerReferenceIndex<Input> {
throws IOException {
super(extension,
createIndexStorage(extension.getKeyDescriptor(), extension.getValueExternalizer(), extension.getName(), indexDir, readOnly),
readOnly ? null : new KeyCollectionBasedForwardIndex<Key, Value>(extension) {
@NotNull
@Override
public PersistentHashMap<Integer, Collection<Key>> createMap() throws IOException {
IndexId<Key, Value> id = getIndexExtension().getName();
return new PersistentHashMap<>(new File(indexDir, id.getName() + ".inputs"),
EnumeratorIntegerDescriptor.INSTANCE,
new InputIndexDataExternalizer<>(extension.getKeyDescriptor(),
id));
}
});
readOnly ? null : new PersistentMapBasedForwardIndex(new File(indexDir, extension.getName().getName() + ".inputs")),
readOnly ? null : new KeyCollectionForwardIndexAccessor<>(extension));
}
@Override
@@ -4,6 +4,7 @@ package com.intellij.util.indexing.impl.forward;
import com.intellij.openapi.util.ThreadLocalCachedByteArray;
import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream;
import com.intellij.openapi.util.io.ByteArraySequence;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.indexing.impl.InputDataDiffBuilder;
import com.intellij.util.io.DataExternalizer;
import com.intellij.util.io.DataOutputStream;
@@ -38,7 +39,7 @@ public abstract class AbstractForwardIndexAccessor<Key, Value, DataType, Input>
@Nullable
@Override
public ByteArraySequence serializeIndexedData(@Nullable Map<Key, Value> map, @Nullable Input content) throws IOException {
if (map == null) return null;
if (ContainerUtil.isEmpty(map)) return null;
return serializeToByteSeq(convertToDataType(map, content), myDataTypeExternalizer, map.size());
}
@@ -2,6 +2,7 @@
package com.intellij.util.indexing.impl.forward;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.indexing.IndexExtension;
import com.intellij.util.indexing.IndexId;
import com.intellij.util.indexing.impl.CollectionInputDataDiffBuilder;
import com.intellij.util.indexing.impl.InputDataDiffBuilder;
@@ -21,6 +22,10 @@ public class KeyCollectionForwardIndexAccessor<Key, Value, Input> extends Abstra
super(externalizer);
}
public KeyCollectionForwardIndexAccessor(@NotNull IndexExtension<Key, Value, Input> extension) {
this(extension.getKeyDescriptor(), extension.getName());
}
public KeyCollectionForwardIndexAccessor(@NotNull KeyDescriptor<Key> externalizer, @NotNull IndexId<Key, Value> indexId) {
super(new InputIndexDataExternalizer<>(externalizer, indexId));
}