jimu-decompiled/sources/com/squareup/haha/perflib/NonRecursiveVisitor.java
2025-05-13 19:24:51 +02:00

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);
}
}