Better storage clean-up on class removal yet yet again (compile-server).

This commit is contained in:
Dmitry Boulytchev
2012-04-05 18:22:58 +04:00
parent 66fc444be2
commit bfce73d408
@@ -1675,22 +1675,12 @@ public class Mappings {
}
}
private void cleanupRemovedClass(final int className, ClassRepr cr, Collection<UsageRepr.Cluster> clusters) {
if (cr == null) {
cr = new Util().reprByName(className);
}
if (cr != null) {
for (final int superSomething : cr.getSupers()) {
myClassToSubclasses.removeFrom(superSomething, cr.name);
}
private void cleanupBackDependency(final int className, Collection<UsageRepr.Cluster> clusters) {
if (clusters == null) {
final int sourceFile = myClassToSourceFile.get(className);
if (sourceFile > 0) {
if (clusters == null) {
clusters = mySourceFileToUsages.get(sourceFile);
}
clusters = mySourceFileToUsages.get(sourceFile);
if (clusters != null) {
for (final UsageRepr.Cluster cluster : clusters) {
@@ -1700,8 +1690,8 @@ public class Mappings {
if (u instanceof UsageRepr.ClassUsage) {
final TIntHashSet residents = cluster.getResidence(u);
if (residents != null && residents.contains(cr.name)) {
myClassToClassDependency.removeFrom(((UsageRepr.ClassUsage)u).className, cr.name);
if (residents != null && residents.contains(className)) {
myClassToClassDependency.removeFrom(((UsageRepr.ClassUsage)u).className, className);
}
}
}
@@ -1710,6 +1700,20 @@ public class Mappings {
}
}
}
}
private void cleanupRemovedClass(final int className, ClassRepr cr, Collection<UsageRepr.Cluster> clusters) {
if (cr == null) {
cr = new Util().reprByName(className);
}
if (cr != null) {
for (final int superSomething : cr.getSupers()) {
myClassToSubclasses.removeFrom(superSomething, cr.name);
}
}
cleanupBackDependency(className, clusters);
myClassToClassDependency.remove(className);
myClassToSubclasses.remove(className);
@@ -1766,6 +1770,9 @@ public class Mappings {
else {
myClassToSourceFile.remove(c);
}
cleanupBackDependency(c, null);
return true;
}
});