mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
use partial stub re-serialization for prebuilt stub's merge
GitOrigin-RevId: 1c6a9d92d58a02294a9ef9563b2089250e1cad6c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
18cd279232
commit
af2ad448b7
@@ -21,19 +21,15 @@ package com.intellij.psi.stubs;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.ThreadLocalCachedValue;
|
||||
import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream;
|
||||
import com.intellij.psi.impl.DebugUtil;
|
||||
import com.intellij.util.CompressionUtil;
|
||||
import com.intellij.util.io.DataInputOutputUtil;
|
||||
import com.intellij.util.io.DigestUtil;
|
||||
import com.intellij.util.io.PersistentHashMapValueStorage;
|
||||
import com.intellij.util.io.UnsyncByteArrayInputStream;
|
||||
import com.intellij.util.io.*;
|
||||
import one.util.streamex.IntStreamEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.DataInput;
|
||||
import java.io.DataOutput;
|
||||
import java.io.IOException;
|
||||
import java.io.*;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -82,6 +78,14 @@ public class SerializedStubTree {
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public SerializedStubTree reSerialize(@NotNull SerializationManagerImpl currentSerializationManager,
|
||||
@NotNull SerializationManagerImpl newSerializationManager) throws IOException {
|
||||
BufferExposingByteArrayOutputStream outStub = new BufferExposingByteArrayOutputStream();
|
||||
currentSerializationManager.reSerialize(new ByteArrayInputStream(myBytes, 0, myLength), outStub, newSerializationManager);
|
||||
return new SerializedStubTree(outStub.getInternalBuffer(), outStub.size(), null);
|
||||
}
|
||||
|
||||
// willIndexStub is one time optimization hint, once can safely pass false
|
||||
@NotNull
|
||||
public Stub getStub(boolean willIndexStub) throws SerializerNotFoundException {
|
||||
|
||||
@@ -114,18 +114,14 @@ fun mergeStubs(paths: List<String>, stubsFilePath: String, stubsFileName: String
|
||||
count++
|
||||
val value = fromStorage.get(key)
|
||||
|
||||
val stub = value.getStub(false, serializationManager)
|
||||
|
||||
// re-serialize stub tree to correctly enumerate strings in the new string enumerator
|
||||
val bytes = BufferExposingByteArrayOutputStream()
|
||||
newSerializationManager.serialize(stub, bytes)
|
||||
|
||||
val newStubTree = SerializedStubTree(bytes.internalBuffer, bytes.size(), null)
|
||||
val newStubTree = value.reSerialize(serializationManager, newSerializationManager)
|
||||
|
||||
if (storage.containsMapping(key)) {
|
||||
if (newStubTree != storage.get(key)) { // TODO: why are they slightly different???
|
||||
storage.get(key).getStub(false, newSerializationManager)
|
||||
|
||||
val stub = value.getStub(false, serializationManager)
|
||||
val bytes2 = BufferExposingByteArrayOutputStream()
|
||||
newSerializationManager.serialize(stub, bytes2)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user