diff --git a/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/analysis/DataFlowAnalyzer.kt b/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/analysis/DataFlowAnalyzer.kt index 48b81dbee2..87b5b48072 100644 --- a/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/analysis/DataFlowAnalyzer.kt +++ b/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/analysis/DataFlowAnalyzer.kt @@ -5,7 +5,7 @@ import org.jgrapht.graph.DefaultEdge import org.jgrapht.graph.EdgeReversedGraph import org.objectweb.asm.tree.AbstractInsnNode import org.objectweb.asm.tree.MethodNode -import org.openrs2.util.collect.removeFirstOrNull +import org.openrs2.util.collect.UniqueQueue public abstract class DataFlowAnalyzer(owner: String, private val method: MethodNode, backwards: Boolean = false) { private val graph: Graph @@ -46,11 +46,11 @@ public abstract class DataFlowAnalyzer(owner: String, private val method: Met val entrySet = createEntrySet() val initialSet = createInitialSet() - val workList = LinkedHashSet() + val workList = UniqueQueue() workList += graph.vertexSet().filter { vertex -> graph.inDegreeOf(vertex) == 0 } while (true) { - val node = workList.removeFirstOrNull() ?: break + val node = workList.poll() ?: break val predecessors = graph.incomingEdgesOf(node).map { edge -> outSets[graph.getEdgeSource(edge)] ?: initialSet diff --git a/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/transform/ConstantArgTransformer.kt b/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/transform/ConstantArgTransformer.kt index ce8b8eaa3d..70e6ea4b80 100644 --- a/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/transform/ConstantArgTransformer.kt +++ b/deob-bytecode/src/main/kotlin/org/openrs2/deob/bytecode/transform/ConstantArgTransformer.kt @@ -46,13 +46,13 @@ import org.openrs2.deob.bytecode.analysis.IntValueSet import org.openrs2.deob.bytecode.filter.ReflectedConstructorFilter import org.openrs2.deob.bytecode.remap.MethodMappingGenerator import org.openrs2.util.collect.DisjointSet -import org.openrs2.util.collect.removeFirstOrNull +import org.openrs2.util.collect.UniqueQueue import javax.inject.Inject import javax.inject.Singleton @Singleton public class ConstantArgTransformer @Inject constructor(private val profile: Profile) : Transformer() { - private val pendingMethods = LinkedHashSet() + private val pendingMethods = UniqueQueue() private val arglessMethods = mutableSetOf>() private val argValues = mutableMapOf() private lateinit var inheritedMethodSets: DisjointSet @@ -72,7 +72,7 @@ public class ConstantArgTransformer @Inject constructor(private val profile: Pro queueEntryPoints(classPath) while (true) { - val method = pendingMethods.removeFirstOrNull() ?: break + val method = pendingMethods.poll() ?: break analyzeMethod(classPath, method) } }