From 2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 19 May 2018 17:02:46 +0200 Subject: Initial port to ASM --- .../java/cuchaz/enigma/analysis/EntryRenamer.java | 47 ++++++++++------------ 1 file changed, 22 insertions(+), 25 deletions(-) (limited to 'src/main/java/cuchaz/enigma/analysis/EntryRenamer.java') diff --git a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java index 75806c3..b0bcc91 100644 --- a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java +++ b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java @@ -87,18 +87,18 @@ public class EntryRenamer { MethodEntry newMethodEntry = renames.get(methodEntry); if (newMethodEntry != null) { return (T) new MethodEntry( - methodEntry.getClassEntry(), - newMethodEntry.getName(), - methodEntry.getSignature() + methodEntry.getOwnerClassEntry(), + newMethodEntry.getName(), + methodEntry.getDesc() ); } return thing; - } else if (thing instanceof ArgumentEntry) { - ArgumentEntry argumentEntry = (ArgumentEntry) thing; - return (T) new ArgumentEntry( - renameMethodsInThing(renames, argumentEntry.getBehaviorEntry()), - argumentEntry.getIndex(), - argumentEntry.getName() + } else if (thing instanceof LocalVariableEntry) { + LocalVariableEntry variableEntry = (LocalVariableEntry) thing; + return (T) new LocalVariableEntry( + renameMethodsInThing(renames, variableEntry.getOwnerEntry()), + variableEntry.getIndex(), + variableEntry.getName() ); } else if (thing instanceof EntryReference) { EntryReference reference = (EntryReference) thing; @@ -119,27 +119,24 @@ public class EntryRenamer { } else if (thing instanceof ClassEntry) { ClassEntry classEntry = (ClassEntry) thing; return (T) new ClassEntry(renameClassesInThing(renames, classEntry.getClassName())); - } else if (thing instanceof FieldEntry) { - FieldEntry fieldEntry = (FieldEntry) thing; - return (T) new FieldEntry(renameClassesInThing(renames, fieldEntry.getClassEntry()), fieldEntry.getName(), renameClassesInThing(renames, fieldEntry.getType())); - } else if (thing instanceof ConstructorEntry) { - ConstructorEntry constructorEntry = (ConstructorEntry) thing; - return (T) new ConstructorEntry(renameClassesInThing(renames, constructorEntry.getClassEntry()), renameClassesInThing(renames, constructorEntry.getSignature())); - } else if (thing instanceof MethodEntry) { - MethodEntry methodEntry = (MethodEntry) thing; - return (T) new MethodEntry(renameClassesInThing(renames, methodEntry.getClassEntry()), methodEntry.getName(), renameClassesInThing(renames, methodEntry.getSignature())); - } else if (thing instanceof ArgumentEntry) { - ArgumentEntry argumentEntry = (ArgumentEntry) thing; - return (T) new ArgumentEntry(renameClassesInThing(renames, argumentEntry.getBehaviorEntry()), argumentEntry.getIndex(), argumentEntry.getName()); + } else if (thing instanceof FieldDefEntry) { + FieldDefEntry fieldEntry = (FieldDefEntry) thing; + return (T) new FieldDefEntry(renameClassesInThing(renames, fieldEntry.getOwnerClassEntry()), fieldEntry.getName(), renameClassesInThing(renames, fieldEntry.getDesc()), fieldEntry.getAccess()); + } else if (thing instanceof MethodDefEntry) { + MethodDefEntry methodEntry = (MethodDefEntry) thing; + return (T) new MethodDefEntry(renameClassesInThing(renames, methodEntry.getOwnerClassEntry()), methodEntry.getName(), renameClassesInThing(renames, methodEntry.getDesc()), methodEntry.getAccess()); + } else if (thing instanceof LocalVariableEntry) { + LocalVariableEntry argumentEntry = (LocalVariableEntry) thing; + return (T) new LocalVariableEntry(renameClassesInThing(renames, argumentEntry.getOwnerEntry()), argumentEntry.getIndex(), argumentEntry.getName()); } else if (thing instanceof EntryReference) { EntryReference reference = (EntryReference) thing; reference.entry = renameClassesInThing(renames, reference.entry); reference.context = renameClassesInThing(renames, reference.context); return thing; - } else if (thing instanceof Signature) { - return (T) new Signature((Signature) thing, className -> renameClassesInThing(renames, className)); - } else if (thing instanceof Type) { - return (T) new Type((Type) thing, className -> renameClassesInThing(renames, className)); + } else if (thing instanceof MethodDescriptor) { + return (T) ((MethodDescriptor) thing).remap(className -> renameClassesInThing(renames, className)); + } else if (thing instanceof TypeDescriptor) { + return (T) ((TypeDescriptor) thing).remap(className -> renameClassesInThing(renames, className)); } return thing; -- cgit v1.2.3 From 406b9a89318473571d27de60b8aa1b51f84af245 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 19 May 2018 17:06:26 +0200 Subject: Package updates --- src/main/java/cuchaz/enigma/analysis/EntryRenamer.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/cuchaz/enigma/analysis/EntryRenamer.java') diff --git a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java index b0bcc91..656fa32 100644 --- a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java +++ b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java @@ -15,6 +15,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import cuchaz.enigma.mapping.*; +import cuchaz.enigma.mapping.entry.*; import java.util.AbstractMap; import java.util.List; -- cgit v1.2.3 From d72aad82c795726efcf6145f5a4172e4c8d3a5b2 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 19 May 2018 20:38:14 +0200 Subject: Signature refactoring --- src/main/java/cuchaz/enigma/analysis/EntryRenamer.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/main/java/cuchaz/enigma/analysis/EntryRenamer.java') diff --git a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java index 656fa32..e37c1d0 100644 --- a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java +++ b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java @@ -122,10 +122,22 @@ public class EntryRenamer { return (T) new ClassEntry(renameClassesInThing(renames, classEntry.getClassName())); } else if (thing instanceof FieldDefEntry) { FieldDefEntry fieldEntry = (FieldDefEntry) thing; - return (T) new FieldDefEntry(renameClassesInThing(renames, fieldEntry.getOwnerClassEntry()), fieldEntry.getName(), renameClassesInThing(renames, fieldEntry.getDesc()), fieldEntry.getAccess()); + return (T) new FieldDefEntry( + renameClassesInThing(renames, fieldEntry.getOwnerClassEntry()), + fieldEntry.getName(), + renameClassesInThing(renames, fieldEntry.getDesc()), + renameClassesInThing(renames, fieldEntry.getSignature()), + fieldEntry.getAccess() + ); } else if (thing instanceof MethodDefEntry) { MethodDefEntry methodEntry = (MethodDefEntry) thing; - return (T) new MethodDefEntry(renameClassesInThing(renames, methodEntry.getOwnerClassEntry()), methodEntry.getName(), renameClassesInThing(renames, methodEntry.getDesc()), methodEntry.getAccess()); + return (T) new MethodDefEntry( + renameClassesInThing(renames, methodEntry.getOwnerClassEntry()), + methodEntry.getName(), + renameClassesInThing(renames, methodEntry.getDesc()), + renameClassesInThing(renames, methodEntry.getSignature()), + methodEntry.getAccess() + ); } else if (thing instanceof LocalVariableEntry) { LocalVariableEntry argumentEntry = (LocalVariableEntry) thing; return (T) new LocalVariableEntry(renameClassesInThing(renames, argumentEntry.getOwnerEntry()), argumentEntry.getIndex(), argumentEntry.getName()); @@ -138,6 +150,8 @@ public class EntryRenamer { return (T) ((MethodDescriptor) thing).remap(className -> renameClassesInThing(renames, className)); } else if (thing instanceof TypeDescriptor) { return (T) ((TypeDescriptor) thing).remap(className -> renameClassesInThing(renames, className)); + } else if (thing instanceof Signature) { + return (T) ((Signature) thing).remap(className -> renameClassesInThing(renames, className)); } return thing; -- cgit v1.2.3 From 8a0e350a04e570074557ff0a53d67e82d54d3005 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 24 Jun 2018 12:24:48 +0200 Subject: Fix method reference and bridge detection --- src/main/java/cuchaz/enigma/analysis/EntryRenamer.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/main/java/cuchaz/enigma/analysis/EntryRenamer.java') diff --git a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java index e37c1d0..9be8378 100644 --- a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java +++ b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java @@ -138,6 +138,13 @@ public class EntryRenamer { renameClassesInThing(renames, methodEntry.getSignature()), methodEntry.getAccess() ); + } else if (thing instanceof MethodEntry) { + MethodEntry methodEntry = (MethodEntry) thing; + return (T) new MethodEntry( + renameClassesInThing(renames, methodEntry.getOwnerClassEntry()), + methodEntry.getName(), + renameClassesInThing(renames, methodEntry.getDesc()) + ); } else if (thing instanceof LocalVariableEntry) { LocalVariableEntry argumentEntry = (LocalVariableEntry) thing; return (T) new LocalVariableEntry(renameClassesInThing(renames, argumentEntry.getOwnerEntry()), argumentEntry.getIndex(), argumentEntry.getName()); -- cgit v1.2.3