From 39f2f2e73dfec20faef67f957e92452617ceda11 Mon Sep 17 00:00:00 2001 From: asie Date: Sat, 27 Oct 2018 00:51:21 +0200 Subject: update gson, fix argument indexing, delete empty class mappings --- .../java/cuchaz/enigma/analysis/SourceIndexMethodVisitor.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/main/java/cuchaz/enigma/analysis') 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 { private Multimap unmatchedIdentifier = HashMultimap.create(); private Map identifierEntryCache = new HashMap<>(); + private int argumentPosition = 0; public SourceIndexMethodVisitor(ReferencedEntryPool entryPool, ClassDefEntry ownerEntry, MethodDefEntry methodEntry) { super(entryPool); @@ -107,10 +108,9 @@ public class SourceIndexMethodVisitor extends SourceIndexVisitor { @Override public Void visitParameterDeclaration(ParameterDeclaration node, SourceIndex index) { - ParameterDefinition def = node.getUserData(Keys.PARAMETER_DEFINITION); + // DO NOT USE def.getSlot()! Doubleword slots increase by 2, not by 1 - int variableOffset = this.methodEntry.getVariableOffset(ownerEntry); - int parameterIndex = def.getSlot() - variableOffset; + int parameterIndex = (argumentPosition++); if (parameterIndex >= 0) { LocalVariableEntry localVariableEntry = new LocalVariableEntry(methodEntry, parameterIndex, node.getName()); @@ -184,8 +184,7 @@ public class SourceIndexMethodVisitor extends SourceIndexVisitor { if (variable != null) { VariableDefinition originalVariable = variable.getOriginalVariable(); if (originalVariable != null) { - int variableOffset = methodEntry.getVariableOffset(ownerEntry); - int variableIndex = originalVariable.getSlot() - variableOffset; + int variableIndex = (argumentPosition++); if (variableIndex >= 0) { LocalVariableEntry localVariableEntry = new LocalVariableEntry(methodEntry, variableIndex, initializer.getName()); identifierEntryCache.put(identifier.getName(), localVariableEntry); -- cgit v1.2.3