diff options
| author | 2018-07-18 13:46:00 +0100 | |
|---|---|---|
| committer | 2018-07-18 13:46:00 +0100 | |
| commit | 1ebe691c12f68beea378b133ddc4bcbde7f3f795 (patch) | |
| tree | fb051d9fde5644bd144a7e9d7bcecc70a256359c /src/main/java/cuchaz/enigma/analysis/EntryRenamer.java | |
| parent | Recursively rebuild method names (diff) | |
| parent | Update version number (diff) | |
| download | enigma-fork-1ebe691c12f68beea378b133ddc4bcbde7f3f795.tar.gz enigma-fork-1ebe691c12f68beea378b133ddc4bcbde7f3f795.tar.xz enigma-fork-1ebe691c12f68beea378b133ddc4bcbde7f3f795.zip | |
Merge pull request #62 from OpenModLoader/asm
ASM based class translator
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/EntryRenamer.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/EntryRenamer.java | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java b/src/main/java/cuchaz/enigma/analysis/EntryRenamer.java index 75806c3..9be8378 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; | |||
| 15 | import com.google.common.collect.Multimap; | 15 | import com.google.common.collect.Multimap; |
| 16 | import com.google.common.collect.Sets; | 16 | import com.google.common.collect.Sets; |
| 17 | import cuchaz.enigma.mapping.*; | 17 | import cuchaz.enigma.mapping.*; |
| 18 | import cuchaz.enigma.mapping.entry.*; | ||
| 18 | 19 | ||
| 19 | import java.util.AbstractMap; | 20 | import java.util.AbstractMap; |
| 20 | import java.util.List; | 21 | import java.util.List; |
| @@ -87,18 +88,18 @@ public class EntryRenamer { | |||
| 87 | MethodEntry newMethodEntry = renames.get(methodEntry); | 88 | MethodEntry newMethodEntry = renames.get(methodEntry); |
| 88 | if (newMethodEntry != null) { | 89 | if (newMethodEntry != null) { |
| 89 | return (T) new MethodEntry( | 90 | return (T) new MethodEntry( |
| 90 | methodEntry.getClassEntry(), | 91 | methodEntry.getOwnerClassEntry(), |
| 91 | newMethodEntry.getName(), | 92 | newMethodEntry.getName(), |
| 92 | methodEntry.getSignature() | 93 | methodEntry.getDesc() |
| 93 | ); | 94 | ); |
| 94 | } | 95 | } |
| 95 | return thing; | 96 | return thing; |
| 96 | } else if (thing instanceof ArgumentEntry) { | 97 | } else if (thing instanceof LocalVariableEntry) { |
| 97 | ArgumentEntry argumentEntry = (ArgumentEntry) thing; | 98 | LocalVariableEntry variableEntry = (LocalVariableEntry) thing; |
| 98 | return (T) new ArgumentEntry( | 99 | return (T) new LocalVariableEntry( |
| 99 | renameMethodsInThing(renames, argumentEntry.getBehaviorEntry()), | 100 | renameMethodsInThing(renames, variableEntry.getOwnerEntry()), |
| 100 | argumentEntry.getIndex(), | 101 | variableEntry.getIndex(), |
| 101 | argumentEntry.getName() | 102 | variableEntry.getName() |
| 102 | ); | 103 | ); |
| 103 | } else if (thing instanceof EntryReference) { | 104 | } else if (thing instanceof EntryReference) { |
| 104 | EntryReference<Entry, Entry> reference = (EntryReference<Entry, Entry>) thing; | 105 | EntryReference<Entry, Entry> reference = (EntryReference<Entry, Entry>) thing; |
| @@ -119,27 +120,45 @@ public class EntryRenamer { | |||
| 119 | } else if (thing instanceof ClassEntry) { | 120 | } else if (thing instanceof ClassEntry) { |
| 120 | ClassEntry classEntry = (ClassEntry) thing; | 121 | ClassEntry classEntry = (ClassEntry) thing; |
| 121 | return (T) new ClassEntry(renameClassesInThing(renames, classEntry.getClassName())); | 122 | return (T) new ClassEntry(renameClassesInThing(renames, classEntry.getClassName())); |
| 122 | } else if (thing instanceof FieldEntry) { | 123 | } else if (thing instanceof FieldDefEntry) { |
| 123 | FieldEntry fieldEntry = (FieldEntry) thing; | 124 | FieldDefEntry fieldEntry = (FieldDefEntry) thing; |
| 124 | return (T) new FieldEntry(renameClassesInThing(renames, fieldEntry.getClassEntry()), fieldEntry.getName(), renameClassesInThing(renames, fieldEntry.getType())); | 125 | return (T) new FieldDefEntry( |
| 125 | } else if (thing instanceof ConstructorEntry) { | 126 | renameClassesInThing(renames, fieldEntry.getOwnerClassEntry()), |
| 126 | ConstructorEntry constructorEntry = (ConstructorEntry) thing; | 127 | fieldEntry.getName(), |
| 127 | return (T) new ConstructorEntry(renameClassesInThing(renames, constructorEntry.getClassEntry()), renameClassesInThing(renames, constructorEntry.getSignature())); | 128 | renameClassesInThing(renames, fieldEntry.getDesc()), |
| 129 | renameClassesInThing(renames, fieldEntry.getSignature()), | ||
| 130 | fieldEntry.getAccess() | ||
| 131 | ); | ||
| 132 | } else if (thing instanceof MethodDefEntry) { | ||
| 133 | MethodDefEntry methodEntry = (MethodDefEntry) thing; | ||
| 134 | return (T) new MethodDefEntry( | ||
| 135 | renameClassesInThing(renames, methodEntry.getOwnerClassEntry()), | ||
| 136 | methodEntry.getName(), | ||
| 137 | renameClassesInThing(renames, methodEntry.getDesc()), | ||
| 138 | renameClassesInThing(renames, methodEntry.getSignature()), | ||
| 139 | methodEntry.getAccess() | ||
| 140 | ); | ||
| 128 | } else if (thing instanceof MethodEntry) { | 141 | } else if (thing instanceof MethodEntry) { |
| 129 | MethodEntry methodEntry = (MethodEntry) thing; | 142 | MethodEntry methodEntry = (MethodEntry) thing; |
| 130 | return (T) new MethodEntry(renameClassesInThing(renames, methodEntry.getClassEntry()), methodEntry.getName(), renameClassesInThing(renames, methodEntry.getSignature())); | 143 | return (T) new MethodEntry( |
| 131 | } else if (thing instanceof ArgumentEntry) { | 144 | renameClassesInThing(renames, methodEntry.getOwnerClassEntry()), |
| 132 | ArgumentEntry argumentEntry = (ArgumentEntry) thing; | 145 | methodEntry.getName(), |
| 133 | return (T) new ArgumentEntry(renameClassesInThing(renames, argumentEntry.getBehaviorEntry()), argumentEntry.getIndex(), argumentEntry.getName()); | 146 | renameClassesInThing(renames, methodEntry.getDesc()) |
| 147 | ); | ||
| 148 | } else if (thing instanceof LocalVariableEntry) { | ||
| 149 | LocalVariableEntry argumentEntry = (LocalVariableEntry) thing; | ||
| 150 | return (T) new LocalVariableEntry(renameClassesInThing(renames, argumentEntry.getOwnerEntry()), argumentEntry.getIndex(), argumentEntry.getName()); | ||
| 134 | } else if (thing instanceof EntryReference) { | 151 | } else if (thing instanceof EntryReference) { |
| 135 | EntryReference<Entry, Entry> reference = (EntryReference<Entry, Entry>) thing; | 152 | EntryReference<Entry, Entry> reference = (EntryReference<Entry, Entry>) thing; |
| 136 | reference.entry = renameClassesInThing(renames, reference.entry); | 153 | reference.entry = renameClassesInThing(renames, reference.entry); |
| 137 | reference.context = renameClassesInThing(renames, reference.context); | 154 | reference.context = renameClassesInThing(renames, reference.context); |
| 138 | return thing; | 155 | return thing; |
| 156 | } else if (thing instanceof MethodDescriptor) { | ||
| 157 | return (T) ((MethodDescriptor) thing).remap(className -> renameClassesInThing(renames, className)); | ||
| 158 | } else if (thing instanceof TypeDescriptor) { | ||
| 159 | return (T) ((TypeDescriptor) thing).remap(className -> renameClassesInThing(renames, className)); | ||
| 139 | } else if (thing instanceof Signature) { | 160 | } else if (thing instanceof Signature) { |
| 140 | return (T) new Signature((Signature) thing, className -> renameClassesInThing(renames, className)); | 161 | return (T) ((Signature) thing).remap(className -> renameClassesInThing(renames, className)); |
| 141 | } else if (thing instanceof Type) { | ||
| 142 | return (T) new Type((Type) thing, className -> renameClassesInThing(renames, className)); | ||
| 143 | } | 162 | } |
| 144 | 163 | ||
| 145 | return thing; | 164 | return thing; |