From 7cba2c3f81383039feb850af0def2bfcafdf7d89 Mon Sep 17 00:00:00 2001 From: Skylot Date: Tue, 8 Mar 2016 15:00:19 +0300 Subject: [PATCH] gui: remove suffix tree search cache --- jadx-gui/build.gradle | 1 - .../java/jadx/gui/jobs/BackgroundWorker.java | 4 +- .../src/main/java/jadx/gui/jobs/IndexJob.java | 10 +---- .../java/jadx/gui/settings/JadxSettings.java | 10 ----- .../jadx/gui/settings/JadxSettingsWindow.java | 10 ----- .../src/main/java/jadx/gui/ui/MainWindow.java | 2 +- .../jadx/gui/utils/search/SuffixTree.java | 39 ------------------- .../gui/utils/search/TextSearchIndex.java | 16 +++----- .../resources/i18n/Messages_en_US.properties | 1 - 9 files changed, 9 insertions(+), 84 deletions(-) delete mode 100644 jadx-gui/src/main/java/jadx/gui/utils/search/SuffixTree.java diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index 4ef6e1dbc..1b7c93d13 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -8,7 +8,6 @@ dependencies { compile 'com.fifesoft:rsyntaxtextarea:2.5.8' compile 'com.google.code.gson:gson:2.3.1' compile files('libs/jfontchooser-1.0.5.jar') - compile 'com.googlecode.concurrent-trees:concurrent-trees:2.4.0' } applicationDistribution.with { diff --git a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java index e0f3992d0..6ffded230 100644 --- a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java +++ b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundWorker.java @@ -60,9 +60,7 @@ public class BackgroundWorker extends SwingWorker { LOG.debug("Memory usage: After gc: {}", Utils.memoryInfo()); TextSearchIndex searchIndex = cache.getTextIndex(); - if (cache.getIndexJob().isUseFastSearch() - && searchIndex != null - && searchIndex.getSkippedCount() > 0) { + if (searchIndex != null && searchIndex.getSkippedCount() > 0) { LOG.warn("Indexing of some classes skipped, count: {}, low memory: {}", searchIndex.getSkippedCount(), Utils.memoryInfo()); } diff --git a/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java b/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java index 83022ec59..e869a9adf 100644 --- a/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java +++ b/jadx-gui/src/main/java/jadx/gui/jobs/IndexJob.java @@ -21,17 +21,15 @@ public class IndexJob extends BackgroundJob { private static final Logger LOG = LoggerFactory.getLogger(IndexJob.class); private final CacheObject cache; - private final boolean useFastSearch; - public IndexJob(JadxWrapper wrapper, CacheObject cache, int threadsCount, boolean useFastSearch) { + public IndexJob(JadxWrapper wrapper, CacheObject cache, int threadsCount) { super(wrapper, threadsCount); - this.useFastSearch = useFastSearch; this.cache = cache; } protected void runJob() { JNodeCache nodeCache = cache.getNodeCache(); - final TextSearchIndex index = new TextSearchIndex(nodeCache, useFastSearch); + final TextSearchIndex index = new TextSearchIndex(nodeCache); final CodeUsageInfo usageInfo = new CodeUsageInfo(nodeCache); cache.setTextIndex(index); cache.setUsageInfo(usageInfo); @@ -73,8 +71,4 @@ public class IndexJob extends BackgroundJob { public String getInfoString() { return "Indexing: "; } - - public boolean isUseFastSearch() { - return useFastSearch; - } } diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java index d7290ac55..26455d152 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java @@ -31,7 +31,6 @@ public class JadxSettings extends JadxCLIArgs { private boolean checkForUpdates = true; private List recentFiles = new ArrayList(); private String fontStr = ""; - private boolean useFastSearch = false; private boolean autoStartJobs = true; private Map windowPos = new HashMap(); @@ -169,15 +168,6 @@ public class JadxSettings extends JadxCLIArgs { this.escapeUnicode = escapeUnicode; } - public boolean isUseFastSearch() { - return false; -// return useFastSearch; - } - - public void setUseFastSearch(boolean useFastSearch) { - this.useFastSearch = useFastSearch; - } - public boolean isAutoStartJobs() { return autoStartJobs; } diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java index db4712b0c..f0db23f39 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettingsWindow.java @@ -294,20 +294,10 @@ public class JadxSettingsWindow extends JDialog { } }); - JCheckBox fastSearch = new JCheckBox(); - fastSearch.setEnabled(false); - fastSearch.setSelected(settings.isUseFastSearch()); - fastSearch.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - settings.setUseFastSearch(e.getStateChange() == ItemEvent.SELECTED); - } - }); - SettingsGroup other = new SettingsGroup(NLS.str("preferences.other")); other.addRow(NLS.str("preferences.check_for_updates"), update); other.addRow(NLS.str("preferences.cfg"), cfg); other.addRow(NLS.str("preferences.raw_cfg"), rawCfg); - other.addRow(NLS.str("preferences.fast_search"), fastSearch); return other; } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index afffc143d..0d67517ce 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -200,7 +200,7 @@ public class MainWindow extends JFrame { // TODO: decompilation freezes sometime with several threads int threadsCount = 1; // settings.getThreadsCount(); cacheObject.setDecompileJob(new DecompileJob(wrapper, threadsCount)); - cacheObject.setIndexJob(new IndexJob(wrapper, cacheObject, threadsCount, settings.isUseFastSearch())); + cacheObject.setIndexJob(new IndexJob(wrapper, cacheObject, threadsCount)); } private synchronized void runBackgroundJobs() { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/SuffixTree.java b/jadx-gui/src/main/java/jadx/gui/utils/search/SuffixTree.java deleted file mode 100644 index 8a04f8edd..000000000 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/SuffixTree.java +++ /dev/null @@ -1,39 +0,0 @@ -package jadx.gui.utils.search; - -import java.util.ArrayList; -import java.util.List; - -import com.googlecode.concurrenttrees.radix.node.concrete.DefaultCharArrayNodeFactory; -import com.googlecode.concurrenttrees.suffix.ConcurrentSuffixTree; - -public class SuffixTree extends SearchIndex { - - private final ConcurrentSuffixTree tree; - - public SuffixTree() { - this.tree = new ConcurrentSuffixTree(new DefaultCharArrayNodeFactory()); - } - - @Override - public void put(String str, V value) { - if (str == null || str.isEmpty()) { - return; - } - tree.putIfAbsent(str, value); - } - - @Override - public List getValuesForKeysContaining(String str) { - Iterable resultsIt = tree.getValuesForKeysContaining(str); - List list = new ArrayList(); - for (V v : resultsIt) { - list.add(v); - } - return list; - } - - @Override - public int size() { - return tree.size(); - } -} diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java index b4515282e..97200fa42 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java @@ -22,7 +22,6 @@ public class TextSearchIndex { private static final Logger LOG = LoggerFactory.getLogger(TextSearchIndex.class); private final JNodeCache nodeCache; - private final boolean useFastSearch; private SearchIndex clsNamesIndex; private SearchIndex mthNamesIndex; @@ -31,17 +30,12 @@ public class TextSearchIndex { private List skippedClasses = new ArrayList(); - public TextSearchIndex(JNodeCache nodeCache, boolean useFastSearch) { + public TextSearchIndex(JNodeCache nodeCache) { this.nodeCache = nodeCache; - this.useFastSearch = useFastSearch; - this.clsNamesIndex = initIndex(); - this.mthNamesIndex = initIndex(); - this.fldNamesIndex = initIndex(); - this.codeIndex = useFastSearch ? new SuffixTree() : new CodeIndex(); - } - - private SearchIndex initIndex() { - return useFastSearch ? new SuffixTree() : new SimpleIndex(); + this.clsNamesIndex = new SimpleIndex(); + this.mthNamesIndex = new SimpleIndex(); + this.fldNamesIndex = new SimpleIndex(); + this.codeIndex = new CodeIndex(); } public void indexNames(JavaClass cls) { diff --git a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties index ecaebbc4d..453bec113 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties @@ -64,7 +64,6 @@ preferences.threads=Processing threads count preferences.cfg=Generate methods CFG graphs (in 'dot' format) preferences.raw_cfg=Generate RAW CFG graphs preferences.font=Editor font -preferences.fast_search=Fast search (uses more memory) preferences.start_jobs=Auto start background decompilation preferences.select_font=Select preferences.deobfuscation_on=Enable deobfuscation