SlowOperations: store trace hashes instead of strings

GitOrigin-RevId: 53879d162d687d80b2f35c8f54cf46eb1114bb6b
This commit is contained in:
Daniil Ovchinnikov
2021-07-13 16:40:46 +00:00
committed by intellij-monorepo-bot
parent 23c8ed8cd3
commit d87848b0a6
@@ -9,15 +9,15 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.util.ThrowableComputable;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringHash;
import com.intellij.util.containers.FList;
import com.intellij.util.ui.EDT;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.util.HashSet;
import java.util.Set;
public final class SlowOperations {
private static final Logger LOG = Logger.getInstance(SlowOperations.class);
@@ -27,7 +27,7 @@ public final class SlowOperations {
public static final String GENERIC = "generic";
public static final String FAST_TRACK = " fast track ";
private static final Set<String> ourReportedTraces = new HashSet<>();
private static final IntSet ourReportedTraceHashCodes = new IntOpenHashSet();
private static final String[] misbehavingFrames = {
"org.jetbrains.kotlin.idea.refactoring.introduce.introduceVariable.KotlinIntroduceVariableHandler",
"com.intellij.apiwatcher.plugin.presentation.bytecode.UsageHighlighter",
@@ -104,7 +104,7 @@ public final class SlowOperations {
return;
}
}
if (!ourReportedTraces.add(stackTrace)) {
if (!ourReportedTraceHashCodes.add(StringHash.murmur(stackTrace))) {
return;
}
LOG.error("Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.");