Merge remote-tracking branch 'origin/master'

This commit is contained in:
Andrey Vlasovskikh
2015-04-01 21:11:57 +03:00
3 changed files with 12 additions and 11 deletions
@@ -15,7 +15,6 @@
*/
package com.intellij.psi.refResolve;
import com.intellij.concurrency.JobSchedulerImpl;
import com.intellij.ide.PowerSaveMode;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationAdapter;
@@ -34,10 +33,7 @@ import com.intellij.openapi.progress.impl.BackgroundableProcessIndicator;
import com.intellij.openapi.progress.impl.ProgressManagerImpl;
import com.intellij.openapi.progress.util.ProgressIndicatorBase;
import com.intellij.openapi.progress.util.ProgressIndicatorUtils;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectCoreUtil;
import com.intellij.openapi.project.*;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.util.Computable;
@@ -529,7 +525,7 @@ public class RefResolveServiceImpl extends RefResolveService implements Runnable
// fine but grabs all CPUs
//return JobLauncher.getInstance().invokeConcurrentlyUnderProgress(fileList, indicator, false, false, processor);
int parallelism = Math.min(4, JobSchedulerImpl.CORES_COUNT);
int parallelism = CacheUpdateRunner.indexingThreadCount();
final Callable<Boolean> processFileFromSet = new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
@@ -174,10 +174,7 @@ public class CacheUpdateRunner extends DumbModeTask {
final AtomicBoolean isFinished = new AtomicBoolean();
try {
int threadsCount = Registry.intValue("caches.indexerThreadsCount");
if (threadsCount <= 0) {
threadsCount = Math.max(1, Math.min(PROC_COUNT - 1, 4));
}
int threadsCount = indexingThreadCount();
if (threadsCount == 1 || application.isWriteAccessAllowed()) {
Runnable process = new MyRunnable(innerIndicator, queue, isFinished, progressUpdater, processInReadAction, project, fileProcessor);
ProgressManager.getInstance().runProcess(process, innerIndicator);
@@ -201,6 +198,14 @@ public class CacheUpdateRunner extends DumbModeTask {
return isFinished.get();
}
public static int indexingThreadCount() {
int threadsCount = Registry.intValue("caches.indexerThreadsCount");
if (threadsCount <= 0) {
threadsCount = Math.max(1, Math.min(PROC_COUNT - 1, 4));
}
return threadsCount;
}
private static boolean waitForAll(@NotNull AtomicBoolean[] finishedRefs, @NotNull Future<?>[] futures) {
assert !ApplicationManager.getApplication().isWriteAccessAllowed();
try {
@@ -21,7 +21,6 @@ import com.intellij.patterns.XmlAttributeValuePattern;
import com.intellij.patterns.XmlPatterns;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.resolve.reference.impl.providers.JavaClassReferenceProvider;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlAttributeValue;
import com.intellij.psi.xml.XmlProcessingInstruction;
import com.intellij.psi.xml.XmlTag;
@@ -128,6 +127,7 @@ public class FxmlReferencesContributor extends PsiReferenceContributor {
public PsiReference[] getReferencesByString(String str,
@NotNull final PsiElement position,
int offsetInPosition) {
if (str.length() == 0) return PsiReference.EMPTY_ARRAY;
final PsiReference[] references = super.getReferencesByString(str, position, offsetInPosition);
final int offset = position instanceof XmlTag ? 1 : 0;
if (references.length <= offset) return PsiReference.EMPTY_ARRAY;