From d27683783317486536021648a353e3e8beb34d0e Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 12 Feb 2013 14:33:52 +0400 Subject: [PATCH] Make LazyValue extend Computable --- .../jet/lang/resolve/lazy/ScopeProvider.java | 2 +- .../lazy/data/FilteringClassLikeInfo.java | 2 +- .../AbstractPsiBasedDeclarationProvider.java | 8 ++++---- .../FileBasedDeclarationProviderFactory.java | 8 ++++---- ...ileBasedPackageMemberDeclarationProvider.java | 2 +- .../descriptors/AbstractLazyMemberScope.java | 4 ++-- .../lazy/descriptors/LazyClassDescriptor.java | 16 ++++++++-------- .../lazy/descriptors/LazyClassMemberScope.java | 2 +- .../descriptors/LazyTypeParameterDescriptor.java | 8 ++++---- .../jet/lang/resolve/lazy/storage/LazyValue.java | 7 +++++-- .../lazy/storage/LockBasedStorageManager.java | 10 +++++----- 11 files changed, 36 insertions(+), 33 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java index e8afc1e8701..b12c40fc3a0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java @@ -88,7 +88,7 @@ public class ScopeProvider { rootPackageDescriptor.getMemberScope(), packageDescriptor.getMemberScope(), importsScope, - defaultImportsScope.get()); + defaultImportsScope.compute()); } private JetScope createScopeWithDefaultImports() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/FilteringClassLikeInfo.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/FilteringClassLikeInfo.java index 3e44baaae2f..9240bc959b7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/FilteringClassLikeInfo.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/data/FilteringClassLikeInfo.java @@ -106,7 +106,7 @@ public class FilteringClassLikeInfo implements JetClassLikeInfo { @Override @NotNull public List getDeclarations() { - return filteredDeclarations.get(); + return filteredDeclarations.compute(); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/AbstractPsiBasedDeclarationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/AbstractPsiBasedDeclarationProvider.java index 07f1040748b..afe2c35e968 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/AbstractPsiBasedDeclarationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/AbstractPsiBasedDeclarationProvider.java @@ -85,24 +85,24 @@ public abstract class AbstractPsiBasedDeclarationProvider implements Declaration @Override public List getAllDeclarations() { - return index.get().allDeclarations; + return index.compute().allDeclarations; } @NotNull @Override public List getFunctionDeclarations(@NotNull Name name) { - return Lists.newArrayList(index.get().functions.get(name)); + return Lists.newArrayList(index.compute().functions.get(name)); } @NotNull @Override public List getPropertyDeclarations(@NotNull Name name) { - return Lists.newArrayList(index.get().properties.get(name)); + return Lists.newArrayList(index.compute().properties.get(name)); } @NotNull @Override public Collection getClassOrObjectDeclarations(@NotNull Name name) { - return index.get().classesAndObjects.get(name); + return index.compute().classesAndObjects.get(name); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java index 129aa9d984c..f7045838f31 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedDeclarationProviderFactory.java @@ -99,7 +99,7 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF } /*package*/ boolean isPackageDeclaredExplicitly(@NotNull FqName packageFqName) { - return index.get().declaredPackages.contains(packageFqName); + return index.compute().declaredPackages.contains(packageFqName); } /*package*/ boolean isPackageDeclared(@NotNull FqName packageFqName) { @@ -107,7 +107,7 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF } /*package*/ Collection getAllDeclaredSubPackagesOf(@NotNull final FqName parent) { - return Collections2.filter(index.get().declaredPackages, new Predicate() { + return Collections2.filter(index.compute().declaredPackages, new Predicate() { @Override public boolean apply(FqName fqName) { return !fqName.isRoot() && fqName.parent().equals(parent); @@ -129,13 +129,13 @@ public class FileBasedDeclarationProviderFactory implements DeclarationProviderF return null; } - return new FileBasedPackageMemberDeclarationProvider(storageManager, packageFqName, this, index.get().filesByPackage.get(packageFqName)); + return new FileBasedPackageMemberDeclarationProvider(storageManager, packageFqName, this, index.compute().filesByPackage.get(packageFqName)); } @NotNull @Override public ClassMemberDeclarationProvider getClassMemberDeclarationProvider(@NotNull JetClassLikeInfo classLikeInfo) { - if (!index.get().filesByPackage.containsKey(classLikeInfo.getContainingPackageFqName())) { + if (!index.compute().filesByPackage.containsKey(classLikeInfo.getContainingPackageFqName())) { throw new IllegalStateException("This factory doesn't know about this class: " + classLikeInfo); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java index 23345a8a60c..ade95d9eef7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/FileBasedPackageMemberDeclarationProvider.java @@ -68,7 +68,7 @@ public class FileBasedPackageMemberDeclarationProvider extends AbstractPsiBasedD @Override public Collection getAllDeclaredPackages() { - return allDeclaredPackages.get(); + return allDeclaredPackages.compute(); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java index e06af3fb732..301dbc5cf2b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java @@ -208,7 +208,7 @@ public abstract class AbstractLazyMemberScope getObjectDescriptors() { - return allDescriptors.get().objects; + return allDescriptors.compute().objects; } @Override @@ -237,7 +237,7 @@ public abstract class AbstractLazyMemberScope getAllDescriptors() { - return allDescriptors.get().all; + return allDescriptors.compute().all; } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index 4a0c2ce200d..743cd846d85 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -172,7 +172,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc @NotNull public JetScope getScopeForClassHeaderResolution() { - return scopeForClassHeaderResolution.get(); + return scopeForClassHeaderResolution.compute(); } @NotNull @@ -193,7 +193,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc @NotNull public JetScope getScopeForMemberDeclarationResolution() { - return scopeForMemberDeclarationResolution.get(); + return scopeForMemberDeclarationResolution.compute(); } @NotNull @@ -211,7 +211,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc @NotNull public JetScope getScopeForPropertyInitializerResolution() { - return scopeForPropertyInitializerResolution.get(); + return scopeForPropertyInitializerResolution.compute(); } @NotNull @@ -277,7 +277,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc @Override public ClassDescriptor getClassObjectDescriptor() { - return classObjectDescriptor.get(); + return classObjectDescriptor.compute(); } @Nullable @@ -337,12 +337,12 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc @NotNull @Override public ReceiverParameterDescriptor getThisAsReceiverParameter() { - return thisAsReceiverParameter.get(); + return thisAsReceiverParameter.compute(); } @Override public List getAnnotations() { - return annotations.get(); + return annotations.compute(); } @NotNull @@ -442,13 +442,13 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc @NotNull @Override public List getParameters() { - return parameters.get(); + return parameters.compute(); } @NotNull @Override public Collection getSupertypes() { - return supertypes.get(); + return supertypes.compute(); } private void findAndDisconnectLoopsInTypeHierarchy(Collection supertypes) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java index 47ff20a62c9..0bb6b17c22f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java @@ -343,7 +343,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope getUpperBounds() { - return upperBounds.get(); + return upperBounds.compute(); } @NotNull @@ -166,7 +166,7 @@ public class LazyTypeParameterDescriptor implements TypeParameterDescriptor, Laz @NotNull @Override public JetType getUpperBoundsAsType() { - return upperBoundsAsType.get(); + return upperBoundsAsType.compute(); } @NotNull @@ -195,7 +195,7 @@ public class LazyTypeParameterDescriptor implements TypeParameterDescriptor, Laz @NotNull @Override public TypeConstructor getTypeConstructor() { - return typeConstructor.get(); + return typeConstructor.compute(); } @NotNull @@ -238,7 +238,7 @@ public class LazyTypeParameterDescriptor implements TypeParameterDescriptor, Laz @NotNull @Override public JetType getDefaultType() { - return defaultType.get(); + return defaultType.compute(); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LazyValue.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LazyValue.java index cc181234a26..a6819bd0038 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LazyValue.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/storage/LazyValue.java @@ -16,6 +16,9 @@ package org.jetbrains.jet.lang.resolve.lazy.storage; -public interface LazyValue { - T get(); +import com.intellij.openapi.util.Computable; + +public interface LazyValue extends Computable { + @Override + T compute(); } 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 496346fa93e..215deaaf3a5 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 @@ -78,7 +78,7 @@ public class LockBasedStorageManager implements StorageManager { @Override public V fun(@NotNull final K input) { LazyValue lazyValue = cache.get(input); - if (lazyValue != null) return lazyValue.get(); + if (lazyValue != null) return lazyValue.compute(); lazyValue = createNullableLazyValue(new Computable() { @Override @@ -88,9 +88,9 @@ public class LockBasedStorageManager implements StorageManager { }); LazyValue oldValue = cache.putIfAbsent(input, lazyValue); - if (oldValue != null) return oldValue.get(); + if (oldValue != null) return oldValue.compute(); - return lazyValue.get(); + return lazyValue.compute(); } }; } @@ -158,7 +158,7 @@ public class LockBasedStorageManager implements StorageManager { @NotNull @Override - public T get() { + public T compute() { T _value = value; if (_value != null) { return _value; @@ -195,7 +195,7 @@ public class LockBasedStorageManager implements StorageManager { @Override @Nullable - public T get() { + public T compute() { // NOTE: no local variables used here, because they would not reduce the number of volatile reads/writes // We want to guarantee that whenever computed = true, value is not null