summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Adrian Siekierka2018-10-26 19:48:36 +0200
committerGravatar Adrian Siekierka2018-10-26 19:48:36 +0200
commitd120d419b5d303c071cae6e7efcc54389fa76445 (patch)
tree6f47585ac39f08ef07aab2740e3bd67b346c096f /src
parentupdate ASM/Guava, merge ASM port fixes (diff)
downloadenigma-d120d419b5d303c071cae6e7efcc54389fa76445.tar.gz
enigma-d120d419b5d303c071cae6e7efcc54389fa76445.tar.xz
enigma-d120d419b5d303c071cae6e7efcc54389fa76445.zip
remove parallelStreams on non-thread-safe ooperations in rebuildMethodNames, gain a bit of performance by not clearing the cache endlessly in phase 2
Diffstat (limited to 'src')
-rw-r--r--src/main/java/cuchaz/enigma/Deobfuscator.java24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java
index 0c671589..465c1ec3 100644
--- a/src/main/java/cuchaz/enigma/Deobfuscator.java
+++ b/src/main/java/cuchaz/enigma/Deobfuscator.java
@@ -368,7 +368,7 @@ public class Deobfuscator {
368 368
369 public void rebuildMethodNames(ProgressListener progress) { 369 public void rebuildMethodNames(ProgressListener progress) {
370 final AtomicInteger i = new AtomicInteger(); 370 final AtomicInteger i = new AtomicInteger();
371 Map<ClassMapping, Map<Entry, String>> renameClassMap = new HashMap<>(); 371 Map<ClassMapping, Map<Entry, String>> renameClassMap = new ConcurrentHashMap<>();
372 372
373 progress.init(getMappings().classes().size() * 3, "Rebuilding method names"); 373 progress.init(getMappings().classes().size() * 3, "Rebuilding method names");
374 374
@@ -378,16 +378,18 @@ public class Deobfuscator {
378 }); 378 });
379 379
380 380
381 renameClassMap.entrySet().parallelStream().forEach(renameClassMapEntry -> { 381 renameClassMap.entrySet().stream().forEach(renameClassMapEntry -> {
382 progress.onProgress(i.getAndIncrement(), renameClassMapEntry.getKey().getDeobfName()); 382 progress.onProgress(i.getAndIncrement(), renameClassMapEntry.getKey().getDeobfName());
383 for (Map.Entry<Entry, String> entry : renameClassMapEntry.getValue().entrySet()) { 383 for (Map.Entry<Entry, String> entry : renameClassMapEntry.getValue().entrySet()) {
384 Entry obfEntry = entry.getKey(); 384 Entry obfEntry = entry.getKey();
385 385
386 removeMapping(obfEntry); 386 removeMapping(obfEntry, false);
387 } 387 }
388 }); 388 });
389 389
390 renameClassMap.entrySet().parallelStream().forEach(renameClassMapEntry -> { 390 translatorCache.clear();
391
392 renameClassMap.entrySet().stream().forEach(renameClassMapEntry -> {
391 progress.onProgress(i.getAndIncrement(), renameClassMapEntry.getKey().getDeobfName()); 393 progress.onProgress(i.getAndIncrement(), renameClassMapEntry.getKey().getDeobfName());
392 394
393 for (Map.Entry<Entry, String> entry : renameClassMapEntry.getValue().entrySet()) { 395 for (Map.Entry<Entry, String> entry : renameClassMapEntry.getValue().entrySet()) {
@@ -623,6 +625,10 @@ public class Deobfuscator {
623 } 625 }
624 626
625 public void removeMapping(Entry obfEntry) { 627 public void removeMapping(Entry obfEntry) {
628 removeMapping(obfEntry, true);
629 }
630
631 public void removeMapping(Entry obfEntry, boolean clearCache) {
626 if (obfEntry instanceof ClassEntry) { 632 if (obfEntry instanceof ClassEntry) {
627 this.renamer.removeClassMapping((ClassEntry) obfEntry); 633 this.renamer.removeClassMapping((ClassEntry) obfEntry);
628 } else if (obfEntry instanceof FieldEntry) { 634 } else if (obfEntry instanceof FieldEntry) {
@@ -639,10 +645,15 @@ public class Deobfuscator {
639 } 645 }
640 646
641 // clear caches 647 // clear caches
642 this.translatorCache.clear(); 648 if (clearCache)
649 this.translatorCache.clear();
643 } 650 }
644 651
645 public void markAsDeobfuscated(Entry obfEntry) { 652 public void markAsDeobfuscated(Entry obfEntry) {
653 markAsDeobfuscated(obfEntry, true);
654 }
655
656 public void markAsDeobfuscated(Entry obfEntry, boolean clearCache) {
646 if (obfEntry instanceof ClassEntry) { 657 if (obfEntry instanceof ClassEntry) {
647 this.renamer.markClassAsDeobfuscated((ClassEntry) obfEntry); 658 this.renamer.markClassAsDeobfuscated((ClassEntry) obfEntry);
648 } else if (obfEntry instanceof FieldEntry) { 659 } else if (obfEntry instanceof FieldEntry) {
@@ -660,7 +671,8 @@ public class Deobfuscator {
660 } 671 }
661 672
662 // clear caches 673 // clear caches
663 this.translatorCache.clear(); 674 if (clearCache)
675 this.translatorCache.clear();
664 } 676 }
665 677
666 public void changeModifier(Entry entry, Mappings.EntryModifier modifierEntry) { 678 public void changeModifier(Entry entry, Mappings.EntryModifier modifierEntry) {