diff options
| author | 2018-10-27 00:51:21 +0200 | |
|---|---|---|
| committer | 2018-10-27 00:51:30 +0200 | |
| commit | 39f2f2e73dfec20faef67f957e92452617ceda11 (patch) | |
| tree | 3d6626dfff2cc3e0e75b7f0edca7b90899fefc29 /src/main/java/cuchaz/enigma/analysis | |
| parent | remove parallelStreams on non-thread-safe ooperations in rebuildMethodNames, ... (diff) | |
| download | enigma-fork-39f2f2e73dfec20faef67f957e92452617ceda11.tar.gz enigma-fork-39f2f2e73dfec20faef67f957e92452617ceda11.tar.xz enigma-fork-39f2f2e73dfec20faef67f957e92452617ceda11.zip | |
update gson, fix argument indexing, delete empty class mappings
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis')
| -rw-r--r-- | src/main/java/cuchaz/enigma/analysis/SourceIndexMethodVisitor.java | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndexMethodVisitor.java b/src/main/java/cuchaz/enigma/analysis/SourceIndexMethodVisitor.java index 83e5e04..2a638db 100644 --- a/src/main/java/cuchaz/enigma/analysis/SourceIndexMethodVisitor.java +++ b/src/main/java/cuchaz/enigma/analysis/SourceIndexMethodVisitor.java | |||
| @@ -33,6 +33,7 @@ public class SourceIndexMethodVisitor extends SourceIndexVisitor { | |||
| 33 | 33 | ||
| 34 | private Multimap<String, Identifier> unmatchedIdentifier = HashMultimap.create(); | 34 | private Multimap<String, Identifier> unmatchedIdentifier = HashMultimap.create(); |
| 35 | private Map<String, Entry> identifierEntryCache = new HashMap<>(); | 35 | private Map<String, Entry> identifierEntryCache = new HashMap<>(); |
| 36 | private int argumentPosition = 0; | ||
| 36 | 37 | ||
| 37 | public SourceIndexMethodVisitor(ReferencedEntryPool entryPool, ClassDefEntry ownerEntry, MethodDefEntry methodEntry) { | 38 | public SourceIndexMethodVisitor(ReferencedEntryPool entryPool, ClassDefEntry ownerEntry, MethodDefEntry methodEntry) { |
| 38 | super(entryPool); | 39 | super(entryPool); |
| @@ -107,10 +108,9 @@ public class SourceIndexMethodVisitor extends SourceIndexVisitor { | |||
| 107 | 108 | ||
| 108 | @Override | 109 | @Override |
| 109 | public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) { | 110 | public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) { |
| 110 | ParameterDefinition def = node.getUserData(Keys.PARAMETER_DEFINITION); | 111 | // DO NOT USE def.getSlot()! Doubleword slots increase by 2, not by 1 |
| 111 | 112 | ||
| 112 | int variableOffset = this.methodEntry.getVariableOffset(ownerEntry); | 113 | int parameterIndex = (argumentPosition++); |
| 113 | int parameterIndex = def.getSlot() - variableOffset; | ||
| 114 | 114 | ||
| 115 | if (parameterIndex >= 0) { | 115 | if (parameterIndex >= 0) { |
| 116 | LocalVariableEntry localVariableEntry = new LocalVariableEntry(methodEntry, parameterIndex, node.getName()); | 116 | LocalVariableEntry localVariableEntry = new LocalVariableEntry(methodEntry, parameterIndex, node.getName()); |
| @@ -184,8 +184,7 @@ public class SourceIndexMethodVisitor extends SourceIndexVisitor { | |||
| 184 | if (variable != null) { | 184 | if (variable != null) { |
| 185 | VariableDefinition originalVariable = variable.getOriginalVariable(); | 185 | VariableDefinition originalVariable = variable.getOriginalVariable(); |
| 186 | if (originalVariable != null) { | 186 | if (originalVariable != null) { |
| 187 | int variableOffset = methodEntry.getVariableOffset(ownerEntry); | 187 | int variableIndex = (argumentPosition++); |
| 188 | int variableIndex = originalVariable.getSlot() - variableOffset; | ||
| 189 | if (variableIndex >= 0) { | 188 | if (variableIndex >= 0) { |
| 190 | LocalVariableEntry localVariableEntry = new LocalVariableEntry(methodEntry, variableIndex, initializer.getName()); | 189 | LocalVariableEntry localVariableEntry = new LocalVariableEntry(methodEntry, variableIndex, initializer.getName()); |
| 191 | identifierEntryCache.put(identifier.getName(), localVariableEntry); | 190 | identifierEntryCache.put(identifier.getName(), localVariableEntry); |