forked from SteamWar/SteamWar
Remove Reflection
This commit is contained in:
@@ -43,6 +43,8 @@ public class ClassPatcher {
|
||||
/** Pre-computed set of targeted internal names for fast filtering. */
|
||||
private final Set<String> targets;
|
||||
|
||||
private final Set<String> targetsPublicConstructor;
|
||||
|
||||
public ClassPatcher(List<AccessWidenerEntry> entries) {
|
||||
this.entries = entries;
|
||||
this.targets = entries.stream()
|
||||
@@ -53,6 +55,10 @@ public class ClassPatcher {
|
||||
return Stream.of(s, s.substring(0, index));
|
||||
})
|
||||
.collect(Collectors.toSet());
|
||||
this.targetsPublicConstructor = entries.stream()
|
||||
.filter(entry -> entry.directive().equals("transitive-extendable"))
|
||||
.map(AccessWidenerEntry::target)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +72,7 @@ public class ClassPatcher {
|
||||
try {
|
||||
ClassReader cr = new ClassReader(classBytes);
|
||||
ClassWriter cw = new ClassWriter(cr, 0);
|
||||
cr.accept(new ClassTransformer(cw, className, entries), ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES);
|
||||
cr.accept(new ClassTransformer(cw, className, entries, targetsPublicConstructor.contains(className)), ClassReader.SKIP_CODE | ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES);
|
||||
return cw.toByteArray();
|
||||
} catch (Exception e) {
|
||||
LOG.warning("[AccessWidener] Failed to transform " + className + ": " + e.getMessage());
|
||||
|
||||
Reference in New Issue
Block a user