mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
concurrent maps created via factory
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -47,7 +47,7 @@ import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -193,7 +193,7 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction {
|
||||
@NotNull
|
||||
private Collection<SmartPsiElementPointer<PsiField>> getFieldsToFix() {
|
||||
Map<SmartPsiElementPointer<PsiField>, Boolean> fields = myClass.getUserData(FIELDS);
|
||||
if (fields == null) myClass.putUserData(FIELDS, fields = new ConcurrentWeakHashMap<SmartPsiElementPointer<PsiField>,Boolean>(1));
|
||||
if (fields == null) myClass.putUserData(FIELDS, fields = ContainerUtil.createConcurrentWeakMap());
|
||||
final Map<SmartPsiElementPointer<PsiField>, Boolean> finalFields = fields;
|
||||
return new AbstractCollection<SmartPsiElementPointer<PsiField>>() {
|
||||
@Override
|
||||
|
||||
@@ -32,7 +32,7 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -132,7 +132,7 @@ public class VariableAccessFromInnerClassFix implements IntentionAction {
|
||||
@NotNull
|
||||
private Collection<PsiVariable> getVariablesToFix() {
|
||||
Map<PsiVariable, Boolean> vars = myContext.getUserData(VARS[myFixType]);
|
||||
if (vars == null) myContext.putUserData(VARS[myFixType], vars = new ConcurrentWeakHashMap<PsiVariable, Boolean>(1));
|
||||
if (vars == null) myContext.putUserData(VARS[myFixType], vars = ContainerUtil.createConcurrentWeakMap());
|
||||
final Map<PsiVariable, Boolean> finalVars = vars;
|
||||
return new AbstractCollection<PsiVariable>() {
|
||||
@Override
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.codeInsight.intention.impl;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightBundle;
|
||||
@@ -33,7 +33,7 @@ import com.intellij.psi.codeStyle.SuggestedNameInfo;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -116,7 +116,7 @@ public class BindFieldsFromParametersAction extends BaseIntentionAction implemen
|
||||
@NotNull
|
||||
private static Collection<SmartPsiElementPointer<PsiParameter>> getUnboundedParams(PsiMethod psiMethod) {
|
||||
Map<SmartPsiElementPointer<PsiParameter>, Boolean> params = psiMethod.getUserData(PARAMS);
|
||||
if (params == null) psiMethod.putUserData(PARAMS, params = new ConcurrentWeakHashMap<SmartPsiElementPointer<PsiParameter>, Boolean>(1));
|
||||
if (params == null) psiMethod.putUserData(PARAMS, params = ContainerUtil.createConcurrentWeakMap());
|
||||
final Map<SmartPsiElementPointer<PsiParameter>, Boolean> finalParams = params;
|
||||
return new AbstractCollection<SmartPsiElementPointer<PsiParameter>>() {
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -41,10 +41,13 @@ import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.slicer.*;
|
||||
import com.intellij.slicer.DuplicateMap;
|
||||
import com.intellij.slicer.SliceAnalysisParams;
|
||||
import com.intellij.slicer.SliceRootNode;
|
||||
import com.intellij.slicer.SliceUsage;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ConcurrentSoftValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.intellij.lang.annotations.MagicConstant;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
@@ -597,7 +600,7 @@ public class MagicConstantInspection extends BaseJavaLocalInspectionTool {
|
||||
private static PsiExpression getLiteralExpression(@NotNull PsiExpression context, @NotNull PsiManager manager, @NotNull String text) {
|
||||
Map<String, PsiExpression> cache = LITERAL_EXPRESSION_CACHE.get(manager);
|
||||
if (cache == null) {
|
||||
cache = new ConcurrentSoftValueHashMap<String, PsiExpression>();
|
||||
cache = ContainerUtil.createConcurrentSoftValueMap();
|
||||
cache = manager.putUserDataIfAbsent(LITERAL_EXPRESSION_CACHE, cache);
|
||||
}
|
||||
PsiExpression expression = cache.get(text);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,7 +25,7 @@ import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
@@ -42,7 +42,7 @@ public class TreeViewUtil {
|
||||
final Project project = aPackage.getProject();
|
||||
ConcurrentMap<PsiPackage, Boolean> map = project.getUserData(SHOULD_ABBREV_PACK_KEY);
|
||||
if (map == null) {
|
||||
final ConcurrentWeakHashMap<PsiPackage, Boolean> newMap = new ConcurrentWeakHashMap<PsiPackage, Boolean>();
|
||||
final ConcurrentMap<PsiPackage, Boolean> newMap = ContainerUtil.createConcurrentWeakMap();
|
||||
map = ((UserDataHolderEx)project).putUserDataIfAbsent(SHOULD_ABBREV_PACK_KEY, newMap);
|
||||
if (map == newMap) {
|
||||
((PsiManagerEx)PsiManager.getInstance(project)).registerRunnableToRunOnChange(new Runnable() {
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.resolve.DefaultParameterTypeInferencePolicy;
|
||||
import com.intellij.psi.impl.source.resolve.ParameterTypeInferencePolicy;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.intellij.lang.annotations.MagicConstant;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -123,7 +123,7 @@ public class MethodCandidateInfo extends CandidateInfo{
|
||||
PsiSubstitutor substitutor = getSubstitutor(false);
|
||||
Map<PsiElement, CurrentCandidateProperties> map = CURRENT_CANDIDATE.get();
|
||||
if (map == null) {
|
||||
map = new ConcurrentWeakHashMap<PsiElement, CurrentCandidateProperties>();
|
||||
map = ContainerUtil.createConcurrentWeakMap();
|
||||
CURRENT_CANDIDATE.set(map);
|
||||
}
|
||||
final PsiMethod method = getElement();
|
||||
@@ -268,7 +268,7 @@ public class MethodCandidateInfo extends CandidateInfo{
|
||||
boolean includeReturnConstraint) {
|
||||
Map<PsiElement, CurrentCandidateProperties> map = CURRENT_CANDIDATE.get();
|
||||
if (map == null) {
|
||||
map = new ConcurrentWeakHashMap<PsiElement, CurrentCandidateProperties>();
|
||||
map = ContainerUtil.createConcurrentWeakMap();
|
||||
CURRENT_CANDIDATE.set(map);
|
||||
}
|
||||
final PsiMethod method = getElement();
|
||||
|
||||
@@ -31,7 +31,10 @@ import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.*;
|
||||
import com.intellij.util.containers.ConcurrentMostlySingularMultiMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MostlySingularMultiMap;
|
||||
import com.intellij.util.containers.WeakKeyWeakValueHashMap;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -54,7 +57,7 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations
|
||||
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
|
||||
@NotNull private static final List<PsiFile> NULL_LIST = new ArrayList<PsiFile>(0);
|
||||
@NotNull
|
||||
private final ConcurrentMap<VirtualFile, List<PsiFile>> myExternalAnnotations = new ConcurrentSoftValueHashMap<VirtualFile, List<PsiFile>>(10, 0.75f, 2);
|
||||
private final ConcurrentMap<VirtualFile, List<PsiFile>> myExternalAnnotations = ContainerUtil.createConcurrentSoftValueMap();
|
||||
protected final PsiManager myPsiManager;
|
||||
|
||||
public BaseExternalAnnotationsManager(final PsiManager psiManager) {
|
||||
@@ -158,7 +161,7 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations
|
||||
}
|
||||
|
||||
|
||||
private final ConcurrentMap<PsiFile, Pair<MostlySingularMultiMap<String, AnnotationData>, Long>> annotationFileToDataAndModStamp = new ConcurrentSoftHashMap<PsiFile, Pair<MostlySingularMultiMap<String, AnnotationData>, Long>>();
|
||||
private final ConcurrentMap<PsiFile, Pair<MostlySingularMultiMap<String, AnnotationData>, Long>> annotationFileToDataAndModStamp = ContainerUtil.createConcurrentSoftMap();
|
||||
|
||||
@NotNull
|
||||
private MostlySingularMultiMap<String, AnnotationData> getDataFromFile(@NotNull final PsiFile file) {
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.intellij.openapi.util.NotNullLazyKey;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.util.containers.ConcurrentList;
|
||||
import com.intellij.util.containers.ConcurrentWeakKeySoftValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -38,7 +37,7 @@ import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
public class ControlFlowFactory {
|
||||
// psiElements hold weakly, controlFlows softly
|
||||
private final ConcurrentMap<PsiElement, ConcurrentList<ControlFlowContext>> cachedFlows = new ConcurrentWeakKeySoftValueHashMap<PsiElement, ConcurrentList<ControlFlowContext>>(100, 0.75f, Runtime.getRuntime().availableProcessors(),
|
||||
private final ConcurrentMap<PsiElement, ConcurrentList<ControlFlowContext>> cachedFlows = ContainerUtil.createConcurrentWeakKeySoftValueMap(100, 0.75f, Runtime.getRuntime().availableProcessors(),
|
||||
ContainerUtil.<PsiElement>canonicalStrategy());
|
||||
|
||||
private static final NotNullLazyKey<ControlFlowFactory, Project> INSTANCE_KEY = ServiceManager.createLazyKey(ControlFlowFactory.class);
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.intellij.psi.util.CachedValueProvider;
|
||||
import com.intellij.psi.util.CachedValuesManager;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiModificationTracker;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -48,7 +48,7 @@ public class InheritanceImplUtil {
|
||||
@Nullable
|
||||
@Override
|
||||
public Result<Map<PsiClass, Boolean>> compute() {
|
||||
final Map<PsiClass, Boolean> map = new ConcurrentWeakHashMap<PsiClass, Boolean>();
|
||||
final Map<PsiClass, Boolean> map = ContainerUtil.createConcurrentWeakMap();
|
||||
return Result.create(map, candidateClass, PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -25,7 +25,7 @@ import com.intellij.psi.util.CachedValuesManager;
|
||||
import com.intellij.psi.util.PsiModificationTracker;
|
||||
import com.intellij.util.ConcurrencyUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.containers.ConcurrentSoftHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -86,7 +86,7 @@ public class JavaConstantExpressionEvaluator extends JavaRecursiveElementWalking
|
||||
private static final CachedValueProvider<ConcurrentMap<PsiElement,Object>> PROVIDER = new CachedValueProvider<ConcurrentMap<PsiElement,Object>>() {
|
||||
@Override
|
||||
public Result<ConcurrentMap<PsiElement,Object>> compute() {
|
||||
ConcurrentMap<PsiElement, Object> value = new ConcurrentSoftHashMap<PsiElement, Object>();
|
||||
ConcurrentMap<PsiElement, Object> value = ContainerUtil.createConcurrentSoftMap();
|
||||
return Result.create(value, PsiModificationTracker.MODIFICATION_COUNT);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -38,7 +38,6 @@ import com.intellij.psi.util.*;
|
||||
import com.intellij.reference.SoftReference;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.containers.ConcurrentSoftValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -187,7 +186,7 @@ public class PsiPackageImpl extends PsiPackageBase implements PsiPackage, Querya
|
||||
|
||||
Map<String, PsiClass[]> map = SoftReference.dereference(myClassCache);
|
||||
if (map == null) {
|
||||
myClassCache = new SoftReference<Map<String, PsiClass[]>>(map = new ConcurrentSoftValueHashMap<String, PsiClass[]>());
|
||||
myClassCache = new SoftReference<Map<String, PsiClass[]>>(map = ContainerUtil.createConcurrentSoftValueMap());
|
||||
}
|
||||
PsiClass[] classes = map.get(name);
|
||||
if (classes != null) {
|
||||
|
||||
@@ -34,7 +34,7 @@ import com.intellij.psi.infos.MethodCandidateInfo;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.reference.SoftReference;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -54,10 +54,10 @@ public class JavaResolveCache {
|
||||
return INSTANCE_KEY.getValue(project);
|
||||
}
|
||||
|
||||
private final ConcurrentMap<PsiExpression, Reference<PsiType>> myCalculatedTypes = new ConcurrentWeakHashMap<PsiExpression, Reference<PsiType>>();
|
||||
private final ConcurrentMap<PsiExpression, Reference<PsiType>> myCalculatedTypes = ContainerUtil.createConcurrentWeakMap();
|
||||
|
||||
private final Map<PsiVariable,Object> myVarToConstValueMapPhysical = new ConcurrentWeakHashMap<PsiVariable, Object>();
|
||||
private final Map<PsiVariable,Object> myVarToConstValueMapNonPhysical = new ConcurrentWeakHashMap<PsiVariable, Object>();
|
||||
private final Map<PsiVariable,Object> myVarToConstValueMapPhysical = ContainerUtil.createConcurrentWeakMap();
|
||||
private final Map<PsiVariable,Object> myVarToConstValueMapNonPhysical = ContainerUtil.createConcurrentWeakMap();
|
||||
|
||||
private static final Object NULL = Key.create("NULL");
|
||||
|
||||
|
||||
@@ -22,18 +22,19 @@ import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.SingleRootFileViewProvider;
|
||||
import com.intellij.psi.impl.file.impl.FileManager;
|
||||
import com.intellij.util.containers.ConcurrentWeakValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
/**
|
||||
* @author max
|
||||
*/
|
||||
class EmptyFileManager implements FileManager {
|
||||
private final PsiManagerImpl myManager;
|
||||
private final ConcurrentWeakValueHashMap<VirtualFile, FileViewProvider> myVFileToViewProviderMap = new ConcurrentWeakValueHashMap<VirtualFile, FileViewProvider>();
|
||||
private final ConcurrentMap<VirtualFile, FileViewProvider> myVFileToViewProviderMap = ContainerUtil.createConcurrentWeakValueMap();
|
||||
|
||||
EmptyFileManager(final PsiManagerImpl manager) {
|
||||
myManager = manager;
|
||||
|
||||
@@ -43,8 +43,6 @@ import com.intellij.psi.impl.file.PsiDirectoryFactory;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.testFramework.LightVirtualFile;
|
||||
import com.intellij.util.ConcurrencyUtil;
|
||||
import com.intellij.util.containers.ConcurrentSoftValueHashMap;
|
||||
import com.intellij.util.containers.ConcurrentWeakValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import gnu.trove.THashMap;
|
||||
@@ -62,8 +60,8 @@ public class FileManagerImpl implements FileManager {
|
||||
private final PsiManagerImpl myManager;
|
||||
private final FileIndexFacade myFileIndex;
|
||||
|
||||
private final ConcurrentMap<VirtualFile, PsiDirectory> myVFileToPsiDirMap = new ConcurrentSoftValueHashMap<VirtualFile, PsiDirectory>();
|
||||
private final ConcurrentMap<VirtualFile, FileViewProvider> myVFileToViewProviderMap = new ConcurrentWeakValueHashMap<VirtualFile, FileViewProvider>();
|
||||
private final ConcurrentMap<VirtualFile, PsiDirectory> myVFileToPsiDirMap = ContainerUtil.createConcurrentSoftValueMap();
|
||||
private final ConcurrentMap<VirtualFile, FileViewProvider> myVFileToViewProviderMap = ContainerUtil.createConcurrentWeakValueMap();
|
||||
|
||||
private boolean myInitialized = false;
|
||||
private boolean myDisposed = false;
|
||||
|
||||
@@ -36,7 +36,7 @@ import com.intellij.profile.ProfileChangeAdapter;
|
||||
import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -49,7 +49,7 @@ import java.util.Map;
|
||||
* @author cdr
|
||||
*/
|
||||
public class WholeFileLocalInspectionsPassFactory extends AbstractProjectComponent implements TextEditorHighlightingPassFactory {
|
||||
private final Map<PsiFile, Boolean> myFileTools = new ConcurrentWeakHashMap<PsiFile, Boolean>();
|
||||
private final Map<PsiFile, Boolean> myFileTools = ContainerUtil.createConcurrentWeakMap();
|
||||
public InspectionProjectProfileManager myProfileManager;
|
||||
|
||||
public WholeFileLocalInspectionsPassFactory(Project project, TextEditorHighlightingPassRegistrar highlightingPassRegistrar,
|
||||
|
||||
@@ -52,7 +52,6 @@ import com.intellij.ui.awt.RelativePoint;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.ui.popup.AbstractPopup;
|
||||
import com.intellij.util.CollectConsumer;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.update.Activatable;
|
||||
import com.intellij.util.ui.update.UiNotifyConnector;
|
||||
@@ -119,7 +118,7 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable,
|
||||
private LookupArranger myPresentableArranger;
|
||||
private final Map<LookupElement, PrefixMatcher> myMatchers =
|
||||
ContainerUtil.newConcurrentMap(ContainerUtil.<LookupElement>identityStrategy());
|
||||
private final Map<LookupElement, Font> myCustomFonts = new ConcurrentWeakHashMap<LookupElement, Font>(
|
||||
private final Map<LookupElement, Font> myCustomFonts = ContainerUtil.createConcurrentWeakMap(10, 0.75f, Runtime.getRuntime().availableProcessors(),
|
||||
ContainerUtil.<LookupElement>identityStrategy());
|
||||
private boolean myStartCompletionWhenNothingMatches;
|
||||
boolean myResizePending;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -27,7 +27,7 @@ import com.intellij.openapi.project.ProjectManagerListener;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileWithId;
|
||||
import com.intellij.util.FileContentUtilCore;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -40,7 +40,7 @@ import java.util.Map;
|
||||
* @author Rustam Vishnyakov
|
||||
*/
|
||||
public class EnforcedPlainTextFileTypeManager implements ProjectManagerListener {
|
||||
private final Map<Project, Collection<VirtualFile>> myPlainTextFileSets = new ConcurrentWeakHashMap<Project, Collection<VirtualFile>>();
|
||||
private final Map<Project, Collection<VirtualFile>> myPlainTextFileSets = ContainerUtil.createConcurrentWeakMap();
|
||||
private volatile boolean mySetsInitialized = false;
|
||||
private static final Object LOCK = new Object();
|
||||
|
||||
|
||||
@@ -28,7 +28,9 @@ import com.intellij.psi.util.PsiModificationTracker;
|
||||
import com.intellij.util.NullableFunction;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.*;
|
||||
import com.intellij.util.containers.ConcurrentIntObjectMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -36,8 +38,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.lang.ref.SoftReference;
|
||||
import java.util.*;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
@@ -51,7 +52,7 @@ public class SemServiceImpl extends SemService{
|
||||
return o2.getUniqueId() - o1.getUniqueId();
|
||||
}
|
||||
};
|
||||
private final ConcurrentWeakHashMap<PsiElement, SoftReference<SemCacheChunk>> myCache = new ConcurrentWeakHashMap<PsiElement, SoftReference<SemCacheChunk>>();
|
||||
private final ConcurrentMap<PsiElement, SoftReference<SemCacheChunk>> myCache = ContainerUtil.createConcurrentWeakMap();
|
||||
private volatile MultiMap<SemKey, NullableFunction<PsiElement, ? extends SemElement>> myProducers;
|
||||
private volatile MultiMap<SemKey, SemKey> myInheritors;
|
||||
private final Project myProject;
|
||||
|
||||
@@ -67,7 +67,6 @@ import com.intellij.ui.components.JBScrollPane;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.PairProcessor;
|
||||
import com.intellij.util.ThrowableRunnable;
|
||||
import com.intellij.util.containers.ConcurrentWeakValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -95,7 +94,7 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Virt
|
||||
private static final Key<Boolean> MUST_RECOMPUTE_FILE_TYPE = Key.create("Must recompute file type");
|
||||
|
||||
private final Set<Document> myUnsavedDocuments = ContainerUtil.newConcurrentSet();
|
||||
private final Map<VirtualFile, Document> myDocuments = new ConcurrentWeakValueHashMap<VirtualFile, Document>();
|
||||
private final Map<VirtualFile, Document> myDocuments = ContainerUtil.createConcurrentWeakValueMap();
|
||||
|
||||
private final MessageBus myBus;
|
||||
|
||||
|
||||
@@ -16,18 +16,19 @@
|
||||
package com.intellij.openapi.vfs.newvfs.impl;
|
||||
|
||||
import com.intellij.util.ConcurrencyUtil;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.keyFMap.KeyFMap;
|
||||
import com.intellij.util.keyFMap.OneElementFMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
class UserDataInterner {
|
||||
private static final ConcurrentWeakHashMap<OneElementFMap, OneElementFMap> ourCache = new ConcurrentWeakHashMap<OneElementFMap, OneElementFMap>();
|
||||
private static final ConcurrentMap<OneElementFMap, OneElementFMap> ourCache = ContainerUtil.createConcurrentWeakMap();
|
||||
|
||||
static KeyFMap internUserData(@NotNull KeyFMap map) {
|
||||
if (map instanceof OneElementFMap && shouldIntern((OneElementFMap)map)) {
|
||||
|
||||
@@ -1,9 +1,24 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package net.sf.cglib.proxy;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ConcurrentWeakValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import net.sf.cglib.core.CodeGenerationException;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
@@ -36,7 +51,7 @@ public class AdvancedProxy {
|
||||
}
|
||||
|
||||
|
||||
private static final Map<ProxyDescription, Factory> ourFactories = new ConcurrentWeakValueHashMap<ProxyDescription, Factory>();
|
||||
private static final Map<ProxyDescription, Factory> ourFactories = ContainerUtil.createConcurrentWeakValueMap();
|
||||
private static final CallbackFilter NO_OBJECT_METHODS_FILTER = new CallbackFilter() {
|
||||
public int accept(Method method) {
|
||||
if (AdvancedProxy.FINALIZE_METHOD.equals(method)) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,8 +16,8 @@
|
||||
package com.intellij;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.util.containers.ConcurrentSoftValueHashMap;
|
||||
import com.intellij.util.containers.ConcurrentWeakFactoryMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.FactoryMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -73,7 +73,7 @@ public abstract class AbstractBundle {
|
||||
new ConcurrentWeakFactoryMap<ClassLoader, Map<String, ResourceBundle>>() {
|
||||
@Override
|
||||
protected Map<String, ResourceBundle> create(ClassLoader key) {
|
||||
return new ConcurrentSoftValueHashMap<String, ResourceBundle>();
|
||||
return ContainerUtil.createConcurrentSoftValueMap();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -19,7 +19,7 @@ import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.util.objectTree.ObjectTree;
|
||||
import com.intellij.openapi.util.objectTree.ObjectTreeAction;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -69,7 +69,7 @@ public class Disposer {
|
||||
};
|
||||
}
|
||||
|
||||
private static final Map<String, Disposable> ourKeyDisposables = new ConcurrentWeakHashMap<String, Disposable>();
|
||||
private static final Map<String, Disposable> ourKeyDisposables = ContainerUtil.createConcurrentWeakMap();
|
||||
|
||||
public static void register(@NotNull Disposable parent, @NotNull Disposable child) {
|
||||
register(parent, child, null);
|
||||
|
||||
@@ -34,7 +34,7 @@ import java.util.Map;
|
||||
* Null keys are allowed
|
||||
* Null values are NOT allowed
|
||||
*/
|
||||
public final class ConcurrentSoftHashMap<K, V> extends ConcurrentRefHashMap<K, V> {
|
||||
final class ConcurrentSoftHashMap<K, V> extends ConcurrentRefHashMap<K, V> {
|
||||
private static class SoftKey<K, V> extends SoftReference<K> implements KeyReference<K, V> {
|
||||
private final int myHash; // Hashcode of key, stored here since the key may be tossed by the GC
|
||||
private final TObjectHashingStrategy<K> myStrategy;
|
||||
|
||||
@@ -29,7 +29,7 @@ import java.util.Map;
|
||||
* Null keys are NOT allowed
|
||||
* Null values are NOT allowed
|
||||
*/
|
||||
public final class ConcurrentSoftValueHashMap<K,V> extends ConcurrentRefValueHashMap<K,V> {
|
||||
final class ConcurrentSoftValueHashMap<K,V> extends ConcurrentRefValueHashMap<K,V> {
|
||||
public ConcurrentSoftValueHashMap(@NotNull Map<K, V> map) {
|
||||
super(map);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.lang.ref.SoftReference;
|
||||
* Concurrent int key -> soft value map
|
||||
* Null values are NOT allowed
|
||||
*/
|
||||
public class ConcurrentSoftValueIntObjectHashMap<V> extends ConcurrentRefValueIntObjectHashMap<V> {
|
||||
class ConcurrentSoftValueIntObjectHashMap<V> extends ConcurrentRefValueIntObjectHashMap<V> {
|
||||
private static class MyRef<V> extends SoftReference<V> implements IntReference<V> {
|
||||
private final int hash;
|
||||
private final int key;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,7 +25,7 @@ public abstract class ConcurrentWeakFactoryMap<T,V> extends FactoryMap<T,V>{
|
||||
|
||||
@Override
|
||||
protected Map<T, V> createMap() {
|
||||
return new ConcurrentWeakHashMap<T,V>();
|
||||
return ContainerUtil.createConcurrentWeakMap();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,7 +34,7 @@ import java.util.Map;
|
||||
* Null keys are allowed
|
||||
* Null values are NOT allowed
|
||||
*/
|
||||
public final class ConcurrentWeakHashMap<K, V> extends ConcurrentRefHashMap<K, V> {
|
||||
final class ConcurrentWeakHashMap<K, V> extends ConcurrentRefHashMap<K, V> {
|
||||
private static class WeakKey<K, V> extends WeakReference<K> implements KeyReference<K, V> {
|
||||
private final int myHash; /* Hashcode of key, stored here since the key may be tossed by the GC */
|
||||
@NotNull private final TObjectHashingStrategy<K> myStrategy;
|
||||
|
||||
@@ -48,10 +48,10 @@ public class ConcurrentWeakKeySoftValueHashMap<K, V> implements ConcurrentMap<K,
|
||||
private final ReferenceQueue<V> myValueQueue = new ReferenceQueue<V>();
|
||||
@NotNull private final TObjectHashingStrategy<K> myHashingStrategy;
|
||||
|
||||
public ConcurrentWeakKeySoftValueHashMap(int initialCapacity,
|
||||
float loadFactor,
|
||||
int concurrencyLevel,
|
||||
@NotNull final TObjectHashingStrategy<K> hashingStrategy) {
|
||||
protected ConcurrentWeakKeySoftValueHashMap(int initialCapacity,
|
||||
float loadFactor,
|
||||
int concurrencyLevel,
|
||||
@NotNull final TObjectHashingStrategy<K> hashingStrategy) {
|
||||
myHashingStrategy = hashingStrategy;
|
||||
myMap = ContainerUtil.newConcurrentMap(initialCapacity, loadFactor, concurrencyLevel, ContainerUtil.<KeyReference<K,V>>canonicalStrategy());
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ import java.util.Map;
|
||||
* Null keys are NOT allowed
|
||||
* Null values are NOT allowed
|
||||
*/
|
||||
public final class ConcurrentWeakValueHashMap<K,V> extends ConcurrentRefValueHashMap<K,V> {
|
||||
final class ConcurrentWeakValueHashMap<K,V> extends ConcurrentRefValueHashMap<K,V> {
|
||||
public ConcurrentWeakValueHashMap(@NotNull Map<K, V> map) {
|
||||
super(map);
|
||||
}
|
||||
|
||||
@@ -2243,12 +2243,59 @@ public class ContainerUtil extends ContainerUtilRt {
|
||||
return new ConcurrentIntObjectHashMap<V>();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <V> ConcurrentIntObjectMap<V> createConcurrentIntObjectSoftValueMap() {
|
||||
return new ConcurrentSoftValueIntObjectHashMap<V>();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <V> ConcurrentLongObjectMap<V> createConcurrentLongObjectMap() {
|
||||
return new ConcurrentLongObjectHashMap<V>();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <K,V> ConcurrentMap<K,V> createConcurrentWeakValueMap() {
|
||||
return new ConcurrentWeakValueHashMap<K, V>();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <K,V> ConcurrentMap<K,V> createConcurrentWeakKeySoftValueMap(int initialCapacity,
|
||||
float loadFactor,
|
||||
int concurrencyLevel,
|
||||
@NotNull final TObjectHashingStrategy<K> hashingStrategy) {
|
||||
return new ConcurrentWeakKeySoftValueHashMap<K, V>(initialCapacity, loadFactor, concurrencyLevel, hashingStrategy);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <K,V> ConcurrentMap<K,V> createConcurrentSoftValueMap() {
|
||||
return new ConcurrentSoftValueHashMap<K, V>();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <K,V> ConcurrentMap<K,V> createConcurrentSoftMap() {
|
||||
return new ConcurrentSoftHashMap<K, V>();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <K,V> ConcurrentMap<K,V> createConcurrentWeakMap() {
|
||||
return new ConcurrentWeakHashMap<K, V>();
|
||||
}
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <K,V> ConcurrentMap<K,V> createConcurrentWeakMap(int initialCapacity,
|
||||
float loadFactor,
|
||||
int concurrencyLevel,
|
||||
@NotNull TObjectHashingStrategy<K> hashingStrategy) {
|
||||
return new ConcurrentWeakHashMap<K, V>(initialCapacity, loadFactor, concurrencyLevel, hashingStrategy);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Contract(pure=true)
|
||||
public static <T> ConcurrentList<T> createConcurrentList() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,7 +25,7 @@ import static com.intellij.util.ObjectUtils.NULL;
|
||||
* @author peter
|
||||
*/
|
||||
public abstract class SoftFactoryMap<T,V> {
|
||||
private final ConcurrentMap<T, SoftReference<V>> myMap = new ConcurrentWeakHashMap<T, SoftReference<V>>();
|
||||
private final ConcurrentMap<T, SoftReference<V>> myMap = ContainerUtil.createConcurrentWeakMap();
|
||||
|
||||
protected abstract V create(T key);
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import static com.intellij.util.ObjectUtils.NULL;
|
||||
* @author peter
|
||||
*/
|
||||
public abstract class WeakFactoryMap<T,V> {
|
||||
private final ConcurrentMap<T, WeakReference<V>> myMap = new ConcurrentWeakHashMap<T, WeakReference<V>>();
|
||||
private final ConcurrentMap<T, WeakReference<V>> myMap = ContainerUtil.createConcurrentWeakMap();
|
||||
|
||||
protected abstract V create(T key);
|
||||
|
||||
|
||||
@@ -22,12 +22,13 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
public class WeakStringInterner extends StringInterner {
|
||||
private final ConcurrentWeakHashMap<String, WeakReference<String>> myMap = new ConcurrentWeakHashMap<String, WeakReference<String>>();
|
||||
private final ConcurrentMap<String, WeakReference<String>> myMap = ContainerUtil.createConcurrentWeakMap();
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.intellij.openapi.util.JDOMUtil;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.containers.ConcurrentSoftValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.ContainerUtilRt;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
@@ -42,7 +41,7 @@ import java.util.List;
|
||||
class BeanBinding extends Binding {
|
||||
private static final Logger LOG = Logger.getInstance(BeanBinding.class);
|
||||
|
||||
private static final Map<Class, List<Accessor>> ourAccessorCache = new ConcurrentSoftValueHashMap<Class, List<Accessor>>();
|
||||
private static final Map<Class, List<Accessor>> ourAccessorCache = ContainerUtil.createConcurrentSoftValueMap();
|
||||
|
||||
private final String myTagName;
|
||||
@SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
|
||||
|
||||
@@ -110,7 +110,7 @@ public class ConcurrentMapsTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testTossedWeakValueIsRemoved() {
|
||||
ConcurrentWeakValueHashMap<Object, Object> map = new ConcurrentWeakValueHashMap<Object, Object>();
|
||||
ConcurrentWeakValueHashMap<Object, Object> map = (ConcurrentWeakValueHashMap<Object, Object>)ContainerUtil.createConcurrentWeakValueMap();
|
||||
map.put(new Object(), new Object());
|
||||
|
||||
tryGcSoftlyReachableObjects(); // sometimes weak references are not collected under linux, try to stress gc to force them
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.util.CachedValueProvider;
|
||||
import com.intellij.psi.util.CachedValuesManager;
|
||||
import com.intellij.psi.util.PsiModificationTracker;
|
||||
import com.intellij.util.containers.ConcurrentSoftHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.dsl.CustomMembersGenerator;
|
||||
@@ -49,7 +48,7 @@ public class NonCodeMembersHolder implements CustomMembersHolder {
|
||||
place, new CachedValueProvider<Map<List<Map>, NonCodeMembersHolder>>() {
|
||||
@Override
|
||||
public Result<Map<List<Map>, NonCodeMembersHolder>> compute() {
|
||||
final Map<List<Map>, NonCodeMembersHolder> map = new ConcurrentSoftHashMap<List<Map>, NonCodeMembersHolder>();
|
||||
final Map<List<Map>, NonCodeMembersHolder> map = ContainerUtil.createConcurrentSoftMap();
|
||||
return Result.create(map, PsiModificationTracker.MODIFICATION_COUNT);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -32,8 +32,6 @@ import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.util.ConcurrencyUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ConcurrentSoftValueHashMap;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
@@ -66,8 +64,8 @@ public class GroovyPsiManager {
|
||||
|
||||
private final Map<String, GrTypeDefinition> myArrayClass = new HashMap<String, GrTypeDefinition>();
|
||||
|
||||
private final ConcurrentMap<GroovyPsiElement, PsiType> myCalculatedTypes = new ConcurrentWeakHashMap<GroovyPsiElement, PsiType>();
|
||||
private final Map<String, Map<GlobalSearchScope, PsiClass>> myClassCache = new ConcurrentSoftValueHashMap<String, Map<GlobalSearchScope, PsiClass>>();
|
||||
private final ConcurrentMap<GroovyPsiElement, PsiType> myCalculatedTypes = ContainerUtil.createConcurrentWeakMap();
|
||||
private final Map<String, Map<GlobalSearchScope, PsiClass>> myClassCache = ContainerUtil.createConcurrentSoftValueMap();
|
||||
private final ConcurrentMap<PsiMember, Boolean> myCompileStatic = ContainerUtil.newConcurrentMap();
|
||||
|
||||
private static final RecursionGuard ourGuard = RecursionManager.createGuard("groovyPsiManager");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -43,7 +43,7 @@ import com.intellij.openapi.vfs.pointers.VirtualFilePointerListener;
|
||||
import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import com.intellij.util.ui.update.Update;
|
||||
import gnu.trove.THashSet;
|
||||
@@ -58,10 +58,11 @@ import org.jetbrains.idea.maven.utils.MavenUtil;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
public class MavenProjectsManagerWatcher {
|
||||
|
||||
private static final Key<ConcurrentWeakHashMap<Project, Integer>> CRC_WITHOUT_SPACES = Key.create("MavenProjectsManagerWatcher.CRC_WITHOUT_SPACES");
|
||||
private static final Key<ConcurrentMap<Project, Integer>> CRC_WITHOUT_SPACES = Key.create("MavenProjectsManagerWatcher.CRC_WITHOUT_SPACES");
|
||||
|
||||
public static final Key<Boolean> FORCE_IMPORT_AND_RESOLVE_ON_REFRESH =
|
||||
Key.create(MavenProjectsManagerWatcher.class + "FORCE_IMPORT_AND_RESOLVE_ON_REFRESH");
|
||||
@@ -414,9 +415,10 @@ public class MavenProjectsManagerWatcher {
|
||||
private boolean xmlFileWasChanged(VirtualFile xmlFile, VFileEvent event) {
|
||||
if (!xmlFile.isValid() || !(event instanceof VFileContentChangeEvent)) return true;
|
||||
|
||||
ConcurrentWeakHashMap<Project, Integer> map = xmlFile.getUserData(CRC_WITHOUT_SPACES);
|
||||
ConcurrentMap<Project, Integer> map = xmlFile.getUserData(CRC_WITHOUT_SPACES);
|
||||
if (map == null) {
|
||||
map = xmlFile.putUserDataIfAbsent(CRC_WITHOUT_SPACES, new ConcurrentWeakHashMap<Project, Integer>());
|
||||
ConcurrentMap<Project, Integer> value = ContainerUtil.createConcurrentWeakMap();
|
||||
map = xmlFile.putUserDataIfAbsent(CRC_WITHOUT_SPACES, value);
|
||||
}
|
||||
|
||||
Integer crc = map.get(myProject);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -21,7 +21,9 @@ import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.roots.ModuleRootAdapter;
|
||||
import com.intellij.openapi.roots.ModuleRootEvent;
|
||||
import com.intellij.openapi.roots.OrderEnumerator;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.vfs.JarFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
@@ -30,7 +32,7 @@ import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.openapi.vfs.impl.jar.JarFileSystemImpl;
|
||||
import com.intellij.uiDesigner.core.Spacer;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.containers.ConcurrentWeakHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.lang.UrlClassLoader;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -40,6 +42,7 @@ import java.io.File;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
/**
|
||||
* @author Anton Katilin
|
||||
@@ -48,7 +51,7 @@ import java.util.*;
|
||||
public final class LoaderFactory {
|
||||
private final Project myProject;
|
||||
|
||||
private final ConcurrentWeakHashMap<Module, ClassLoader> myModule2ClassLoader;
|
||||
private final ConcurrentMap<Module, ClassLoader> myModule2ClassLoader;
|
||||
private ClassLoader myProjectClassLoader = null;
|
||||
private final MessageBusConnection myConnection;
|
||||
|
||||
@@ -58,7 +61,7 @@ public final class LoaderFactory {
|
||||
|
||||
public LoaderFactory(final Project project) {
|
||||
myProject = project;
|
||||
myModule2ClassLoader = new ConcurrentWeakHashMap<Module, ClassLoader>();
|
||||
myModule2ClassLoader = ContainerUtil.createConcurrentWeakMap();
|
||||
myConnection = myProject.getMessageBus().connect();
|
||||
myConnection.subscribe(ProjectTopics.PROJECT_ROOTS, new ModuleRootAdapter() {
|
||||
public void rootsChanged(final ModuleRootEvent event) {
|
||||
|
||||
Reference in New Issue
Block a user