aboutsummaryrefslogtreecommitdiffstats
path: root/src/proguard/classfile/editor/MemberReferenceFixer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/proguard/classfile/editor/MemberReferenceFixer.java')
-rw-r--r--src/proguard/classfile/editor/MemberReferenceFixer.java37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/proguard/classfile/editor/MemberReferenceFixer.java b/src/proguard/classfile/editor/MemberReferenceFixer.java
index 6d665c1..4bd8af5 100644
--- a/src/proguard/classfile/editor/MemberReferenceFixer.java
+++ b/src/proguard/classfile/editor/MemberReferenceFixer.java
@@ -2,7 +2,7 @@
* ProGuard -- shrinking, optimization, obfuscation, and preverification
* of Java bytecode.
*
- * Copyright (c) 2002-2011 Eric Lafortune (eric@graphics.cornell.edu)
+ * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
@@ -298,17 +298,22 @@ implements ClassVisitor,
{
Clazz referencedClass = enclosingMethodAttribute.referencedClass;
- // Does it have a new name or type?
- String newName = referencedMember.getName(referencedClass);
- String newType = referencedMember.getDescriptor(referencedClass);
+ // Does it have a new class?
+ if (!enclosingMethodAttribute.getClassName(clazz).equals(referencedClass.getName()))
+ {
+ // Update the class index.
+ enclosingMethodAttribute.u2classIndex =
+ new ConstantPoolEditor((ProgramClass)clazz).addClassConstant(referencedClass);
+ }
- if (!enclosingMethodAttribute.getName(clazz).equals(newName) ||
- !enclosingMethodAttribute.getType(clazz).equals(newType))
+ // Does it have a new name or type?
+ if (!enclosingMethodAttribute.getName(clazz).equals(referencedMember.getName(referencedClass)) ||
+ !enclosingMethodAttribute.getType(clazz).equals(referencedMember.getDescriptor(referencedClass)))
{
// Update the name and type index.
enclosingMethodAttribute.u2nameAndTypeIndex =
- new ConstantPoolEditor((ProgramClass)clazz).addNameAndTypeConstant(newName,
- newType);
+ new ConstantPoolEditor((ProgramClass)clazz).addNameAndTypeConstant(referencedMember.getName(referencedClass),
+ referencedMember.getDescriptor(referencedClass));
}
}
}
@@ -428,9 +433,10 @@ implements ClassVisitor,
Member referencedMember)
{
System.out.println("MemberReferenceFixer:");
- System.out.println(" ["+clazz.getName()+"]: String ["+
- stringConstant.getString(clazz)+"] -> ["+
- referencedClass.getName()+"."+referencedMember.getName(referencedClass)+" "+referencedMember.getDescriptor(referencedClass)+"]");
+ System.out.println(" Class file = "+clazz.getName());
+ System.out.println(" Ref class = "+referencedClass.getName());
+ System.out.println(" Ref member name = "+stringConstant.getString(clazz));
+ System.out.println(" -> "+referencedMember.getName(referencedClass));
}
@@ -440,8 +446,11 @@ implements ClassVisitor,
Member referencedMember)
{
System.out.println("MemberReferenceFixer:");
- System.out.println(" ["+clazz.getName()+"]: ["+
- refConstant.getClassName(clazz)+"."+refConstant.getName(clazz)+" "+refConstant.getType(clazz)+"] -> ["+
- referencedClass.getName()+"."+referencedMember.getName(referencedClass)+" "+referencedMember.getDescriptor(referencedClass)+"]");
+ System.out.println(" Class file = "+clazz.getName());
+ System.out.println(" Ref class = "+referencedClass.getName());
+ System.out.println(" Ref member name = "+refConstant.getName(clazz));
+ System.out.println(" -> "+referencedMember.getName(referencedClass));
+ System.out.println(" Ref descriptor = "+refConstant.getType(clazz));
+ System.out.println(" -> "+referencedMember.getDescriptor(referencedClass));
}
}