Skip to content

Commit 72ba7d3

Browse files
committed
Merge 1.18 into 1.19.2
2 parents a198bfa + 1834298 commit 72ba7d3

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

common/src/main/java/org/embeddedt/modernfix/util/ClassInfoManager.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import java.lang.reflect.Field;
1414
import java.util.ArrayList;
15-
import java.util.Collection;
1615
import java.util.List;
1716
import java.util.Map;
1817

@@ -54,15 +53,13 @@ private static void disableLoggers() throws ReflectiveOperationException {
5453

5554
private static void doClear() {
5655
Map<String, ClassInfo> classInfoCache;
57-
Field mixinField, stateField, classNodeField, methodsField, fieldsField;
56+
Field mixinField, stateField, classNodeField;
5857
Class<?> stateClz;
5958
try {
6059
disableLoggers();
6160
Field field = accessible(ClassInfo.class.getDeclaredField("cache"));
6261
classInfoCache = (Map<String, ClassInfo>) field.get(null);
6362
mixinField = accessible(ClassInfo.class.getDeclaredField("mixin"));
64-
methodsField = accessible(ClassInfo.class.getDeclaredField("methods"));
65-
fieldsField = accessible(ClassInfo.class.getDeclaredField("fields"));
6663
stateClz = Class.forName("org.spongepowered.asm.mixin.transformer.MixinInfo$State");
6764
stateField = accessible(Class.forName("org.spongepowered.asm.mixin.transformer.MixinInfo").getDeclaredField("state"));
6865
classNodeField = accessible(stateClz.getDeclaredField("classNode"));
@@ -73,7 +70,8 @@ private static void doClear() {
7370
MixinEnvironment.getDefaultEnvironment().audit();
7471
try {
7572
ClassNode emptyNode = new ClassNode();
76-
classInfoCache.entrySet().removeIf(entry -> {
73+
List<Map.Entry<String, ClassInfo>> entries = new ArrayList<>(classInfoCache.entrySet());
74+
entries.stream().filter(entry -> {
7775
if(entry.getKey().equals("java/lang/Object"))
7876
return false;
7977
ClassInfo mixinClz = entry.getValue();
@@ -87,14 +85,11 @@ private static void doClear() {
8785
if (state != null)
8886
classNodeField.set(state, emptyNode);
8987
}
90-
// clear fields, methods
91-
((Collection<?>)methodsField.get(mixinClz)).clear();
92-
((Collection<?>)fieldsField.get(mixinClz)).clear();
9388
} catch (ReflectiveOperationException | RuntimeException e) {
9489
e.printStackTrace();
9590
}
9691
return true;
97-
});
92+
}).forEach(entry -> classInfoCache.remove(entry.getKey()));
9893
} catch (RuntimeException e) {
9994
e.printStackTrace();
10095
}

0 commit comments

Comments
 (0)