From 37c672a9bf1546023b5caded7711c6c17076b65f Mon Sep 17 00:00:00 2001 From: Graham Date: Sat, 6 Jun 2020 15:25:49 +0100 Subject: [PATCH] Add support for overriding inSets of entry nodes to DataFlowAnalyzer Signed-off-by: Graham --- .../main/java/dev/openrs2/deob/analysis/DataFlowAnalyzer.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/deob/src/main/java/dev/openrs2/deob/analysis/DataFlowAnalyzer.kt b/deob/src/main/java/dev/openrs2/deob/analysis/DataFlowAnalyzer.kt index 7ff70e0f..848be59a 100644 --- a/deob/src/main/java/dev/openrs2/deob/analysis/DataFlowAnalyzer.kt +++ b/deob/src/main/java/dev/openrs2/deob/analysis/DataFlowAnalyzer.kt @@ -21,6 +21,7 @@ abstract class DataFlowAnalyzer(owner: String, private val method: MethodNode } } + protected open fun createEntrySet(): T = createInitialSet() protected abstract fun createInitialSet(): T protected abstract fun join(set1: T, set2: T): T protected abstract fun transfer(set: T, insn: AbstractInsnNode): T @@ -42,6 +43,7 @@ abstract class DataFlowAnalyzer(owner: String, private val method: MethodNode } fun analyze() { + val entrySet = createEntrySet() val initialSet = createInitialSet() val workList = LinkedHashSet() @@ -55,7 +57,7 @@ abstract class DataFlowAnalyzer(owner: String, private val method: MethodNode } val inSet = if (predecessors.isEmpty()) { - initialSet + entrySet } else { predecessors.reduce(this::join) }