diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/bytecode')
| -rw-r--r-- | src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java index 0141b45..4885470 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java +++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java | |||
| @@ -85,10 +85,8 @@ public class TranslationMethodVisitor extends MethodVisitor { | |||
| 85 | hasParameterMeta = true; | 85 | hasParameterMeta = true; |
| 86 | 86 | ||
| 87 | String translatedSignature = translator.getTranslatedSignature(Signature.createTypedSignature(signature)).toString(); | 87 | String translatedSignature = translator.getTranslatedSignature(Signature.createTypedSignature(signature)).toString(); |
| 88 | int offsetIndex = index; | ||
| 88 | 89 | ||
| 89 | int offset = methodEntry.getVariableOffset(ownerEntry); | ||
| 90 | |||
| 91 | int offsetIndex = index - offset; | ||
| 92 | if (offsetIndex >= 0) { | 90 | if (offsetIndex >= 0) { |
| 93 | LocalVariableDefEntry entry = new LocalVariableDefEntry(methodEntry, offsetIndex, name, new TypeDescriptor(desc)); | 91 | LocalVariableDefEntry entry = new LocalVariableDefEntry(methodEntry, offsetIndex, name, new TypeDescriptor(desc)); |
| 94 | LocalVariableDefEntry translatedEntry = translator.getTranslatedVariableDef(entry); | 92 | LocalVariableDefEntry translatedEntry = translator.getTranslatedVariableDef(entry); |
| @@ -149,8 +147,10 @@ public class TranslationMethodVisitor extends MethodVisitor { | |||
| 149 | // If we didn't receive any parameter metadata, generate it | 147 | // If we didn't receive any parameter metadata, generate it |
| 150 | if (!hasParameterMeta) { | 148 | if (!hasParameterMeta) { |
| 151 | List<TypeDescriptor> arguments = methodEntry.getDesc().getArgumentDescs(); | 149 | List<TypeDescriptor> arguments = methodEntry.getDesc().getArgumentDescs(); |
| 150 | int offset = 0; | ||
| 151 | |||
| 152 | for (int index = 0; index < arguments.size(); index++) { | 152 | for (int index = 0; index < arguments.size(); index++) { |
| 153 | LocalVariableEntry entry = new LocalVariableEntry(methodEntry, index, ""); | 153 | LocalVariableEntry entry = new LocalVariableEntry(methodEntry, offset, ""); |
| 154 | LocalVariableEntry translatedEntry = translator.getTranslatedVariable(entry); | 154 | LocalVariableEntry translatedEntry = translator.getTranslatedVariable(entry); |
| 155 | String translatedName = translatedEntry.getName(); | 155 | String translatedName = translatedEntry.getName(); |
| 156 | if (translatedName.equals(entry.getName())) { | 156 | if (translatedName.equals(entry.getName())) { |
| @@ -158,6 +158,8 @@ public class TranslationMethodVisitor extends MethodVisitor { | |||
| 158 | } else { | 158 | } else { |
| 159 | super.visitParameter(translatedName, 0); | 159 | super.visitParameter(translatedName, 0); |
| 160 | } | 160 | } |
| 161 | |||
| 162 | offset += arguments.get(index).getSize(); | ||
| 161 | } | 163 | } |
| 162 | } | 164 | } |
| 163 | super.visitEnd(); | 165 | super.visitEnd(); |