diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java index 9a47f18dc8c..7aad3cef67e 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java @@ -86,7 +86,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade { final PsiClassFinder psiClassFinder = injector.getPsiClassFinder(); // TODO: Replace with stub declaration provider - LockBasedStorageManager storageManager = LockBasedStorageManager.create(); + LockBasedStorageManager storageManager = new LockBasedStorageManager(); FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(storageManager, files, new Predicate() { @Override public boolean apply(FqName fqName) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LockBasedStorageManager.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LockBasedStorageManager.java index 4b27a2a2883..28f641d2a9e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LockBasedStorageManager.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LockBasedStorageManager.java @@ -37,13 +37,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; public class LockBasedStorageManager implements StorageManager { - public static LockBasedStorageManager create() { - return new LockBasedStorageManager(true); - } - - public static LockBasedStorageManager createWithoutExceptionMemoization() { - return new LockBasedStorageManager(false); - } private final Object lock = new Object() { @Override @@ -52,19 +45,13 @@ public class LockBasedStorageManager implements StorageManager { } }; - private final boolean memoizeExceptions; - - private LockBasedStorageManager(boolean memoizeExceptions) { - this.memoizeExceptions = memoizeExceptions; - } - @NotNull @Override public MemoizedFunctionToNotNull createMemoizedFunction( @NotNull Function compute, @NotNull ReferenceKind valuesReferenceKind ) { ConcurrentMap map = createConcurrentMap(valuesReferenceKind); - return new MapBasedMemoizedFunctionToNotNull(lock, map, compute, memoizeExceptions); + return new MapBasedMemoizedFunctionToNotNull(lock, map, compute); } @NotNull @@ -73,7 +60,7 @@ public class LockBasedStorageManager implements StorageManager { @NotNull Function compute, @NotNull ReferenceKind valuesReferenceKind ) { ConcurrentMap map = createConcurrentMap(valuesReferenceKind); - return new MapBasedMemoizedFunction(lock, map, compute, memoizeExceptions); + return new MapBasedMemoizedFunction(lock, map, compute); } private static ConcurrentMap createConcurrentMap(ReferenceKind referenceKind) { @@ -83,13 +70,13 @@ public class LockBasedStorageManager implements StorageManager { @NotNull @Override public NotNullLazyValue createLazyValue(@NotNull Computable computable) { - return new LockBasedNotNullLazyValue(lock, computable, memoizeExceptions); + return new LockBasedNotNullLazyValue(lock, computable); } @NotNull @Override public NotNullLazyValue createLazyValueWithPostCompute(@NotNull Computable computable, @NotNull final Consumer postCompute) { - return new LockBasedNotNullLazyValue(lock, computable, memoizeExceptions) { + return new LockBasedNotNullLazyValue(lock, computable) { @Override protected void postCompute(@NotNull T value) { postCompute.consume(value); @@ -100,7 +87,7 @@ public class LockBasedStorageManager implements StorageManager { @NotNull @Override public NullableLazyValue createNullableLazyValue(@NotNull Computable computable) { - return new LockBasedLazyValue(lock, computable, memoizeExceptions); + return new LockBasedLazyValue(lock, computable); } @NotNull @@ -108,7 +95,7 @@ public class LockBasedStorageManager implements StorageManager { public NullableLazyValue createNullableLazyValueWithPostCompute( @NotNull Computable computable, @NotNull final Consumer postCompute ) { - return new LockBasedLazyValue(lock, computable, memoizeExceptions) { + return new LockBasedLazyValue(lock, computable) { @Override protected void postCompute(@Nullable T value) { postCompute.consume(value); @@ -134,15 +121,13 @@ public class LockBasedStorageManager implements StorageManager { private static class LockBasedLazyValue implements NullableLazyValue { private final Object lock; private final Computable computable; - private final boolean memoizeExceptions; @Nullable private volatile Object value = null; - public LockBasedLazyValue(@NotNull Object lock, @NotNull Computable computable, boolean memoizeExceptions) { + public LockBasedLazyValue(@NotNull Object lock, @NotNull Computable computable) { this.lock = lock; this.computable = computable; - this.memoizeExceptions = memoizeExceptions; } @Override @@ -161,9 +146,7 @@ public class LockBasedStorageManager implements StorageManager { return typedValue; } catch (Throwable throwable) { - if (memoizeExceptions) { - value = WrappedValues.escapeThrowable(throwable); - } + value = WrappedValues.escapeThrowable(throwable); throw ExceptionUtils.rethrow(throwable); } } @@ -176,8 +159,8 @@ public class LockBasedStorageManager implements StorageManager { private static class LockBasedNotNullLazyValue extends LockBasedLazyValue implements NotNullLazyValue { - public LockBasedNotNullLazyValue(@NotNull Object lock, @NotNull Computable computable, boolean memoizeExceptions) { - super(lock, computable, memoizeExceptions); + public LockBasedNotNullLazyValue(@NotNull Object lock, @NotNull Computable computable) { + super(lock, computable); } @Override @@ -193,15 +176,11 @@ public class LockBasedStorageManager implements StorageManager { private final Object lock; private final ConcurrentMap cache; private final Function compute; - private final boolean memoizeExceptions; - public MapBasedMemoizedFunction( - @NotNull Object lock, @NotNull ConcurrentMap map, - @NotNull Function compute, boolean memoizeExceptions) { + public MapBasedMemoizedFunction(@NotNull Object lock, @NotNull ConcurrentMap map, @NotNull Function compute) { this.lock = lock; this.cache = map; this.compute = compute; - this.memoizeExceptions = memoizeExceptions; } @Override @@ -222,10 +201,8 @@ public class LockBasedStorageManager implements StorageManager { return typedValue; } catch (Throwable throwable) { - if (memoizeExceptions) { - Object oldValue = cache.put(input, WrappedValues.escapeThrowable(throwable)); - assert oldValue == null : "Race condition detected"; - } + Object oldValue = cache.put(input, WrappedValues.escapeThrowable(throwable)); + assert oldValue == null : "Race condition detected"; throw ExceptionUtils.rethrow(throwable); } @@ -238,10 +215,9 @@ public class LockBasedStorageManager implements StorageManager { public MapBasedMemoizedFunctionToNotNull( @NotNull Object lock, @NotNull ConcurrentMap map, - @NotNull Function compute, - boolean memoizeExceptions + @NotNull Function compute ) { - super(lock, map, compute, memoizeExceptions); + super(lock, map, compute); } @NotNull @@ -348,4 +324,5 @@ public class LockBasedStorageManager implements StorageManager { } } } + } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java index a89e040c6eb..6b1e72f44e0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java @@ -238,10 +238,7 @@ public class KotlinBuiltIns { @NotNull private KotlinCodeAnalyzer createLazyResolveSession(@NotNull Project project) throws IOException { List files = loadResourcesAsJetFiles(project, LIBRARY_FILES); - - // As builtins resolve session is never recreated, we don't want it be corrupted forever with stored exceptions - LockBasedStorageManager storageManager = LockBasedStorageManager.createWithoutExceptionMemoization(); - + LockBasedStorageManager storageManager = new LockBasedStorageManager(); return new ResolveSession( project, storageManager, diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java index 8d0c5a5dda2..38e498dbb58 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveDescriptorRendererTest.java @@ -56,7 +56,7 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule(""); lazyModule.setModuleConfiguration(injectorForTopDownAnalyzer.getModuleDescriptor().getModuleConfiguration()); - LockBasedStorageManager storageManager = LockBasedStorageManager.create(); + LockBasedStorageManager storageManager = new LockBasedStorageManager(); final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule, new FileBasedDeclarationProviderFactory(storageManager, files)); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java index 74a63978ac2..0958a49ceeb 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java @@ -100,7 +100,7 @@ public class LazyResolveTestUtil { final JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver(); - LockBasedStorageManager storageManager = LockBasedStorageManager.create(); + LockBasedStorageManager storageManager = new LockBasedStorageManager(); FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(storageManager, files, new Predicate() { @Override public boolean apply(FqName fqName) { diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java index 1c0104d40ea..e81aa42ffc6 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java @@ -214,7 +214,7 @@ public class JetSourceNavigationHelper { } Project project = decompiledDeclaration.getProject(); - LockBasedStorageManager storageManager = LockBasedStorageManager.create(); + LockBasedStorageManager storageManager = new LockBasedStorageManager(); FileBasedDeclarationProviderFactory providerFactory = new FileBasedDeclarationProviderFactory(storageManager, getContainingFiles(candidates), new Predicate() { @Override diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java index 31f7248552c..295203e5d01 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java @@ -140,7 +140,7 @@ public final class AnalyzerFacadeForJS { @NotNull public static ResolveSession getLazyResolveSession(Collection files, Config config) { - LockBasedStorageManager storageManager = LockBasedStorageManager.create(); + LockBasedStorageManager storageManager = new LockBasedStorageManager(); FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory( storageManager, Config.withJsLibAdded(files, config), Predicates.alwaysFalse()); ModuleDescriptorImpl lazyModule = createJsModule("");