Add debug option to ReflectionRemapper
This commit is contained in:
parent
3be71eee94
commit
0bc766f8e7
@ -13,6 +13,7 @@ import java.util.List;
|
||||
public class ReflectionRemapper {
|
||||
|
||||
private JarMapping jarMapping;
|
||||
public boolean debug = false;
|
||||
|
||||
public ReflectionRemapper(JarMapping jarMapping) {
|
||||
this.jarMapping = jarMapping;
|
||||
@ -45,45 +46,47 @@ public class ReflectionRemapper {
|
||||
private void remapGetDeclaredField(AbstractInsnNode insn) {
|
||||
MethodInsnNode mi = (MethodInsnNode) insn;
|
||||
|
||||
System.out.println("methodnode "+mi.owner+" "+mi.name+" "+mi.desc);
|
||||
if (!mi.owner.equals("java/lang/Class") || !mi.name.equals("getDeclaredField") || !mi.desc.equals("(Ljava/lang/String;)Ljava/lang/reflect/Field;")) {
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println("found getDeclaredField!");
|
||||
log("ReflectionRemapper found getDeclaredField!");
|
||||
|
||||
if (insn.getPrevious() == null || insn.getPrevious().getOpcode() != Opcodes.LDC) {
|
||||
System.out.println("- not constant field; skipping");
|
||||
log("- not constant field; skipping");
|
||||
return;
|
||||
}
|
||||
LdcInsnNode ldcField = (LdcInsnNode) insn.getPrevious();
|
||||
System.out.println("field constant = "+ldcField.cst);
|
||||
if (!(ldcField.cst instanceof String)) {
|
||||
System.out.println("- not field string; skipping");
|
||||
log("- not field string; skipping: " + ldcField.cst);
|
||||
return;
|
||||
}
|
||||
String fieldName = (String) ldcField.cst;
|
||||
|
||||
if (ldcField.getPrevious() == null || ldcField.getPrevious().getOpcode() != Opcodes.LDC) {
|
||||
System.out.println("- not constant class; skipping");
|
||||
log("- not constant class; skipping: field=" + ldcField.cst);
|
||||
return;
|
||||
}
|
||||
LdcInsnNode ldcClass = (LdcInsnNode) ldcField.getPrevious();
|
||||
if (!(ldcClass.cst instanceof Type)) {
|
||||
System.out.println("- not class type; skipping");
|
||||
log("- not class type; skipping: field=" + ldcClass.cst + ", class=" + ldcClass.cst);
|
||||
return;
|
||||
}
|
||||
System.out.println("class = "+ldcClass.cst);
|
||||
String className = ((Type) ldcClass.cst).getInternalName();
|
||||
|
||||
System.out.println("Remapping "+className+"/"+fieldName);
|
||||
|
||||
String newName = jarMapping.tryClimb(jarMapping.fields, NodeType.FIELD, className, fieldName);
|
||||
log("Remapping "+className+"/"+fieldName + " -> " + newName);
|
||||
|
||||
if (newName != null) {
|
||||
// Change the string literal to the correct name
|
||||
ldcField.cst = newName;
|
||||
//ldcClass.cst = className; // not remapped here - taken care of by JarRemapper
|
||||
System.out.println(" -> to "+newName);
|
||||
}
|
||||
}
|
||||
|
||||
private void log(String message) {
|
||||
if (debug) {
|
||||
System.out.println("[ReflectionRemapper] " + message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user