diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CollectHighlightsUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CollectHighlightsUtil.java index 105aae587f50..644a0a1778a3 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CollectHighlightsUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/CollectHighlightsUtil.java @@ -20,6 +20,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileTypes.StdFileTypes; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Condition; @@ -79,6 +80,7 @@ public class CollectHighlightsUtil { PsiElement child = element.getFirstChild(); if (child != null) { + ProgressManager.getInstance().checkCanceled(); // composite element while (child != null) { if (offset > endOffset) break; diff --git a/platform/platform-impl/src/com/intellij/concurrency/JobSchedulerImpl.java b/platform/platform-impl/src/com/intellij/concurrency/JobSchedulerImpl.java index 6bcb1a95ec3c..80d781687df9 100644 --- a/platform/platform-impl/src/com/intellij/concurrency/JobSchedulerImpl.java +++ b/platform/platform-impl/src/com/intellij/concurrency/JobSchedulerImpl.java @@ -34,7 +34,7 @@ public class JobSchedulerImpl extends JobScheduler implements Disposable { private static final ThreadFactory WORKERS_FACTORY = new ThreadFactory() { int i; public Thread newThread(final Runnable r) { - return new Thread(r, "JobScheduler pool "+i++); + return new Thread(r, "JobScheduler pool "+i+++"/"+CORES_COUNT); } }; diff --git a/platform/util/src/com/intellij/util/containers/LimitedPool.java b/platform/util/src/com/intellij/util/containers/LimitedPool.java index 57ef33ad53e8..4e2ccd58d09f 100644 --- a/platform/util/src/com/intellij/util/containers/LimitedPool.java +++ b/platform/util/src/com/intellij/util/containers/LimitedPool.java @@ -19,6 +19,8 @@ */ package com.intellij.util.containers; +import org.jetbrains.annotations.NotNull; + public class LimitedPool { private final int capacity; private final ObjectFactory factory; @@ -38,11 +40,14 @@ public class LimitedPool { public T alloc() { if (index == 0) return factory.create(); + int i = --index; //noinspection unchecked - return (T)storage[--index]; + T result = (T)storage[i]; + storage[i] = null; + return result; } - public void recycle(T t) { + public void recycle(@NotNull T t) { factory.cleanup(t); if (index >= capacity) return; diff --git a/platform/util/src/com/intellij/util/containers/OrderedSet.java b/platform/util/src/com/intellij/util/containers/OrderedSet.java index ad15f1f0f720..e3f32d7fc8e6 100644 --- a/platform/util/src/com/intellij/util/containers/OrderedSet.java +++ b/platform/util/src/com/intellij/util/containers/OrderedSet.java @@ -21,8 +21,8 @@ import gnu.trove.TObjectHashingStrategy; import java.util.*; public class OrderedSet extends AbstractSet implements List { - private THashSet myHashSet; - private ArrayList myElements; + private final THashSet myHashSet; + private final ArrayList myElements; public OrderedSet(TObjectHashingStrategy hashingStrategy) { myHashSet = new THashSet(hashingStrategy); @@ -77,9 +77,10 @@ public class OrderedSet extends AbstractSet implements List { public Object clone() { try{ - OrderedSet newSet = (OrderedSet)super.clone(); - newSet.myHashSet = (THashSet)myHashSet.clone(); - newSet.myElements = (ArrayList)myElements.clone(); + OrderedSet newSet = (OrderedSet)super.clone(); + newSet.myHashSet.addAll(myHashSet); + newSet.myElements.clear(); + newSet.myElements.addAll(myElements); return newSet; } catch(CloneNotSupportedException e){ diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyLineMarkerTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyLineMarkerTest.java index f8d222aef2c0..c2dcec70363d 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyLineMarkerTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/GroovyLineMarkerTest.java @@ -18,13 +18,10 @@ package org.jetbrains.plugins.groovy.lang; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl; -import com.intellij.codeInsight.daemon.impl.LineMarkersPass; -import com.intellij.codeInsight.daemon.impl.SlowLineMarkersPass; -import com.intellij.mock.MockProgressIndicator; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiFile; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; +import com.intellij.testFramework.fixtures.impl.JavaCodeInsightTestFixtureImpl; import org.jetbrains.plugins.groovy.util.TestUtils; import java.util.List; @@ -73,17 +70,10 @@ public class GroovyLineMarkerTest extends LightCodeInsightFixtureTestCase { } private void doTest(int count) { - final PsiFile file = myFixture.getFile(); final Editor editor = myFixture.getEditor(); final Project project = myFixture.getProject(); - LineMarkersPass pass = new LineMarkersPass(project, file, editor.getDocument(), 0, file.getTextLength(), false); - pass.collectInformation(new MockProgressIndicator()); - pass.applyInformationToEditor(); - - final SlowLineMarkersPass slowLineMarkersPass = new SlowLineMarkersPass(project, file, editor.getDocument(), 0, file.getTextLength()); - slowLineMarkersPass.collectInformation(new MockProgressIndicator()); - slowLineMarkersPass.applyInformationToEditor(); + ((JavaCodeInsightTestFixtureImpl)myFixture).doHighlighting(); final List infoList = DaemonCodeAnalyzerImpl.getLineMarkers(editor.getDocument(), project); assertNotNull(infoList);