56 lines
1.6 KiB
Java
56 lines
1.6 KiB
Java
package com.squareup.haha.perflib;
|
|
|
|
import gnu.trove.TLongHashSet;
|
|
import java.util.ArrayDeque;
|
|
import java.util.Deque;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class NonRecursiveVisitor implements Visitor {
|
|
public final Deque<Instance> mStack = new ArrayDeque();
|
|
public final TLongHashSet mSeen = new TLongHashSet();
|
|
|
|
protected void defaultAction(Instance instance) {
|
|
}
|
|
|
|
public void doVisit(Iterable<? extends Instance> iterable) {
|
|
for (Instance instance : iterable) {
|
|
if (instance instanceof RootObj) {
|
|
instance.accept(this);
|
|
} else {
|
|
visitLater(null, instance);
|
|
}
|
|
}
|
|
while (!this.mStack.isEmpty()) {
|
|
Instance pop = this.mStack.pop();
|
|
if (this.mSeen.add(pop.getId())) {
|
|
pop.accept(this);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // com.squareup.haha.perflib.Visitor
|
|
public void visitArrayInstance(ArrayInstance arrayInstance) {
|
|
defaultAction(arrayInstance);
|
|
}
|
|
|
|
@Override // com.squareup.haha.perflib.Visitor
|
|
public void visitClassInstance(ClassInstance classInstance) {
|
|
defaultAction(classInstance);
|
|
}
|
|
|
|
@Override // com.squareup.haha.perflib.Visitor
|
|
public void visitClassObj(ClassObj classObj) {
|
|
defaultAction(classObj);
|
|
}
|
|
|
|
@Override // com.squareup.haha.perflib.Visitor
|
|
public void visitLater(Instance instance, Instance instance2) {
|
|
this.mStack.push(instance2);
|
|
}
|
|
|
|
@Override // com.squareup.haha.perflib.Visitor
|
|
public void visitRootObj(RootObj rootObj) {
|
|
defaultAction(rootObj);
|
|
}
|
|
}
|