Optimize RAM consumption by FqName: remove `FqName.parent` as it can be calculated on the fly
diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/FqName.java b/core/compiler.common/src/org/jetbrains/kotlin/name/FqName.java
index 497fece..e186dc6 100644
--- a/core/compiler.common/src/org/jetbrains/kotlin/name/FqName.java
+++ b/core/compiler.common/src/org/jetbrains/kotlin/name/FqName.java
@@ -33,9 +33,6 @@
@NotNull
private final FqNameUnsafe fqName;
- // cache
- private transient FqName parent;
-
public FqName(@NotNull String fqName) {
this.fqName = new FqNameUnsafe(fqName);
}
@@ -44,10 +41,6 @@
this.fqName = fqName;
}
- private FqName(@NotNull FqNameUnsafe fqName, FqName parent) {
- this.fqName = fqName;
- this.parent = parent;
- }
@NotNull
public String asString() {
@@ -65,22 +58,12 @@
@NotNull
public FqName parent() {
- if (parent != null) {
- return parent;
- }
-
- if (isRoot()) {
- throw new IllegalStateException("root");
- }
-
- parent = new FqName(fqName.parent());
-
- return parent;
+ return new FqName(fqName.parent());
}
@NotNull
public FqName child(@NotNull Name name) {
- return new FqName(fqName.child(name), this);
+ return new FqName(fqName.child(name));
}
@NotNull