From 57622f3badf1f7c88a4a2e59d75540dac4647bab Mon Sep 17 00:00:00 2001 From: LootBagger <91767458+LootBagger@users.noreply.github.com> Date: Sat, 5 Feb 2022 11:24:18 -0800 Subject: [PATCH] plugin manager: optimize plugin dependency sorting Previously, PluginManager.loadPlugins would make a graph of reverse dependencies, topologically sort them, then reverse the list. This commit changes loadPlugins to build a graph of dependencies so no reversal is needed. Co-authored-by: Adam --- .../java/net/runelite/client/plugins/PluginManager.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java index ccbf5e61c7..55f8405b39 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java @@ -26,7 +26,6 @@ package net.runelite.client.plugins; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; -import com.google.common.collect.Lists; import com.google.common.graph.Graph; import com.google.common.graph.GraphBuilder; import com.google.common.graph.Graphs; @@ -320,8 +319,7 @@ public class PluginManager continue; } - Class pluginClass = (Class) clazz; - graph.addNode(pluginClass); + graph.addNode((Class) clazz); } // Build plugin graph @@ -333,7 +331,7 @@ public class PluginManager { if (graph.nodes().contains(pluginDependency.value())) { - graph.putEdge(pluginClazz, pluginDependency.value()); + graph.putEdge(pluginDependency.value(), pluginClazz); } } } @@ -344,7 +342,6 @@ public class PluginManager } List> sortedPlugins = topologicalSort(graph); - sortedPlugins = Lists.reverse(sortedPlugins); int loaded = 0; List newPlugins = new ArrayList<>();