From 0c879a72c53e7486678188d568fa54861061898e Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 4 Apr 2017 22:47:03 +0200 Subject: [PATCH] CompletionResultSet/CamelHumpMatcher: reuse existing objects when possible instead of copying --- .../codeInsight/completion/impl/CamelHumpMatcher.java | 4 ++++ .../codeInsight/completion/impl/CompletionServiceImpl.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java index 9b59c4a6ece0..790ad4a886a4 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CamelHumpMatcher.java @@ -87,6 +87,10 @@ public class CamelHumpMatcher extends PrefixMatcher { @Override @NotNull public PrefixMatcher cloneWithPrefix(@NotNull final String prefix) { + if (prefix.equals(myPrefix)) { + return this; + } + return new CamelHumpMatcher(prefix, myCaseSensitive); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java index 8cc3b5f3004e..944eb1786047 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java @@ -143,6 +143,10 @@ public final class CompletionServiceImpl extends CompletionService { @Override @NotNull public CompletionResultSet withPrefixMatcher(@NotNull final PrefixMatcher matcher) { + if (matcher.equals(getPrefixMatcher())) { + return this; + } + return new CompletionResultSetImpl(getConsumer(), myLengthOfTextBeforePosition, matcher, myContributor, myParameters, mySorter, this); } @@ -160,7 +164,7 @@ public final class CompletionServiceImpl extends CompletionService { @Override @NotNull public CompletionResultSet withPrefixMatcher(@NotNull final String prefix) { - return withPrefixMatcher(new CamelHumpMatcher(prefix)); + return withPrefixMatcher(getPrefixMatcher().cloneWithPrefix(prefix)); } @NotNull