From 1b8c7aaf3da4e6f0131b6327a00cae355b033e00 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 5 Nov 2014 08:30:32 +0200 Subject: [PATCH] Memory optimization. Do not put sets into caches --- .../descriptors/AbstractLazyMemberScope.java | 24 +++++++++---------- .../descriptors/LazyClassMemberScope.java | 16 ++++++------- .../org/jetbrains/jet/utils/collections.kt | 6 ++--- 3 files changed, 22 insertions(+), 24 deletions(-) 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 a97414dfd39..ca064139e63 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 @@ -51,8 +51,8 @@ public abstract class AbstractLazyMemberScope> classDescriptors; - private final MemoizedFunctionToNotNull> functionDescriptors; - private final MemoizedFunctionToNotNull> propertyDescriptors; + private final MemoizedFunctionToNotNull> functionDescriptors; + private final MemoizedFunctionToNotNull> propertyDescriptors; private final NotNullLazyValue> descriptorsFromDeclaredElements; private final NotNullLazyValue> extraDescriptors; @@ -76,15 +76,15 @@ public abstract class AbstractLazyMemberScope>() { + this.functionDescriptors = storageManager.createMemoizedFunction(new Function1>() { @Override - public Set invoke(Name name) { + public Collection invoke(Name name) { return doGetFunctions(name); } }); - this.propertyDescriptors = storageManager.createMemoizedFunction(new Function1>() { + this.propertyDescriptors = storageManager.createMemoizedFunction(new Function1>() { @Override - public Set invoke(Name name) { + public Collection invoke(Name name) { return doGetProperties(name); } }); @@ -131,12 +131,12 @@ public abstract class AbstractLazyMemberScope getFunctions(@NotNull Name name) { + public Collection getFunctions(@NotNull Name name) { return functionDescriptors.invoke(name); } @NotNull - private Set doGetFunctions(@NotNull Name name) { + private Collection doGetFunctions(@NotNull Name name) { Set result = Sets.newLinkedHashSet(); Collection declarations = declarationProvider.getFunctionDeclarations(name); @@ -154,7 +154,7 @@ public abstract class AbstractLazyMemberScope getProperties(@NotNull Name name) { + public Collection getProperties(@NotNull Name name) { return propertyDescriptors.invoke(name); } @NotNull - public Set doGetProperties(@NotNull Name name) { + public Collection doGetProperties(@NotNull Name name) { Set result = Sets.newLinkedHashSet(); Collection declarations = declarationProvider.getPropertyDeclarations(name); @@ -190,7 +190,7 @@ public abstract class AbstractLazyMemberScope result); 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 021d2a75cfb..9f00abfa1ab 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 @@ -135,9 +135,9 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope getFunctions(@NotNull Name name) { + public Collection getFunctions(@NotNull Name name) { // TODO: this should be handled by lazy function descriptors - Set functions = super.getFunctions(name); + Collection functions = super.getFunctions(name); resolveUnknownVisibilitiesForMembers(functions); return functions; } @@ -170,7 +170,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope properties = getProperties(parameter.getName()); + Collection properties = getProperties(parameter.getName()); if (properties.isEmpty()) continue; assert properties.size() == 1 : @@ -205,14 +205,14 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope getProperties(@NotNull Name name) { + public Collection getProperties(@NotNull Name name) { // TODO: this should be handled by lazy property descriptors - Set properties = super.getProperties(name); - resolveUnknownVisibilitiesForMembers((Set) properties); + Collection properties = super.getProperties(name); + resolveUnknownVisibilitiesForMembers((Collection) properties); return properties; } - private void resolveUnknownVisibilitiesForMembers(@NotNull Set descriptors) { + private void resolveUnknownVisibilitiesForMembers(@NotNull Collection descriptors) { for (CallableMemberDescriptor descriptor : descriptors) { if (descriptor.getKind() != FAKE_OVERRIDE && descriptor.getKind() != DELEGATION) { OverridingUtil.resolveUnknownVisibilityForMember(descriptor, OverrideResolver.createCannotInferVisibilityReporter(trace)); @@ -328,7 +328,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope functions = getFunctions(componentName); + Collection functions = getFunctions(componentName); if (functions.isEmpty()) break; result.addAll(functions); diff --git a/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt b/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt index 5b97947b864..0bad5fcaab6 100644 --- a/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt +++ b/core/util.runtime/src/org/jetbrains/jet/utils/collections.kt @@ -21,6 +21,7 @@ import java.util.ArrayList import java.util.HashMap import java.util.HashSet import java.util.Collections +import java.util.LinkedHashSet public fun Stream.valuesToMap(key: (V) -> K): Map { val map = LinkedHashMap() @@ -97,7 +98,4 @@ public fun newHashSetWithExpectedSize(expectedSize: Int): HashSet { } public fun Collection.toReadOnlyList(): List = - if (isEmpty()) Collections.emptyList() else ArrayList(this) - -public fun Collection.toReadOnlySet(): Set = - if (isEmpty()) Collections.emptySet() else HashSet(this) \ No newline at end of file + if (isEmpty()) Collections.emptyList() else ArrayList(this) \ No newline at end of file