From fb31387fdeedd831b80446afbe7adea719499348 Mon Sep 17 00:00:00 2001 From: Adrian Siekierka Date: Sun, 4 Nov 2018 12:30:00 +0100 Subject: unify local variable/argument numbering --- .../enigma/bytecode/translators/TranslationMethodVisitor.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/main/java/cuchaz/enigma/bytecode') 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 { hasParameterMeta = true; String translatedSignature = translator.getTranslatedSignature(Signature.createTypedSignature(signature)).toString(); + int offsetIndex = index; - int offset = methodEntry.getVariableOffset(ownerEntry); - - int offsetIndex = index - offset; if (offsetIndex >= 0) { LocalVariableDefEntry entry = new LocalVariableDefEntry(methodEntry, offsetIndex, name, new TypeDescriptor(desc)); LocalVariableDefEntry translatedEntry = translator.getTranslatedVariableDef(entry); @@ -149,8 +147,10 @@ public class TranslationMethodVisitor extends MethodVisitor { // If we didn't receive any parameter metadata, generate it if (!hasParameterMeta) { List arguments = methodEntry.getDesc().getArgumentDescs(); + int offset = 0; + for (int index = 0; index < arguments.size(); index++) { - LocalVariableEntry entry = new LocalVariableEntry(methodEntry, index, ""); + LocalVariableEntry entry = new LocalVariableEntry(methodEntry, offset, ""); LocalVariableEntry translatedEntry = translator.getTranslatedVariable(entry); String translatedName = translatedEntry.getName(); if (translatedName.equals(entry.getName())) { @@ -158,6 +158,8 @@ public class TranslationMethodVisitor extends MethodVisitor { } else { super.visitParameter(translatedName, 0); } + + offset += arguments.get(index).getSize(); } } super.visitEnd(); -- cgit v1.2.3