summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java')
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java10
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 0141b45e..48854701 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();