/** * Lets the referenced class member accept the given visitor. */ public void referencedMemberAccept(MemberVisitor memberVisitor) { if (referencedMember != null) { referencedMember.accept(referencedClass, memberVisitor); } } }
private static boolean hasFlag(Member member, int flag) { return (member.getAccessFlags() & flag) == flag; }
public void visitAnyMember(Clazz clazz, Member member) { set.add(member.getName(clazz) + member.getDescriptor(clazz)); } }
/** * Returns whether accessing the given class member from the given class may * have side effects when they are initialized. */ public static boolean mayHaveSideEffects(Clazz referencingClass, Clazz referencedClass, Member referencedMember) { // Is the referenced class member static or an initializer method? // Does accessing the referenced class then have side effects? return ((referencedMember.getAccessFlags() & ClassConstants.ACC_STATIC) != 0 || referencedMember.getName(referencedClass).equals(ClassConstants.METHOD_NAME_INIT)) && mayHaveSideEffects(referencingClass, referencedClass); }
String name = member.getName(clazz); String descriptor = member.getDescriptor(clazz); warningPrinter != null) descriptor = member.getDescriptor(clazz); warningPrinter.print(clazz.getName(), "Warning: " + ClassUtil.externalClassName(clazz.getName()) + member.accept(clazz, memberObfuscator);
if ((referencedMethod.getAccessFlags() & ClassConstants.ACC_STATIC) != 0) else if ((referencedMethod.getAccessFlags() & ClassConstants.ACC_PRIVATE) != 0 || referencedMethod.getName(referencedMethodClass).equals(ClassConstants.METHOD_NAME_INIT)) (ClassUtil.internalMethodParameterSize(referencedMethod.getDescriptor(referencedMethodClass), false)) << 8; (referencedMethod.getAccessFlags() & ClassConstants.ACC_ABSTRACT) == 0)
/** * Finds the last class member in the linked list of related class members. * @param member the given class member. * @return the last class member in the linked list. */ public static Member lastMember(Member member) { Member lastMember = member; while (lastMember.getVisitorInfo() != null && lastMember.getVisitorInfo() instanceof Member) { lastMember = (Member)lastMember.getVisitorInfo(); } return lastMember; }
/** * Links the two given class members. */ private static void link(Member member1, Member member2) { // Get the last methods in the both chains. Member lastMember1 = lastMember(member1); Member lastMember2 = lastMember(member2); // Check if both link chains aren't already ending in the same element. if (!lastMember1.equals(lastMember2)) { // Merge the two chains, with the library members last. if (lastMember2 instanceof LibraryMember) { lastMember1.setVisitorInfo(lastMember2); } else { lastMember2.setVisitorInfo(lastMember1); } } }
private void debug(Clazz clazz, StringConstant stringConstant, Clazz referencedClass, Member referencedMember) { System.out.println("MemberReferenceFixer:"); 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)); }
String name = member.getName(clazz); String descriptor = member.getDescriptor(clazz); warningPrinter != null) descriptor = member.getDescriptor(clazz); warningPrinter.print(clazz.getName(), "Warning: " + ClassUtil.externalClassName(clazz.getName()) + member.accept(clazz, memberObfuscator);
if ((referencedMethod.getAccessFlags() & ClassConstants.ACC_STATIC) != 0) else if ((referencedMethod.getAccessFlags() & ClassConstants.ACC_PRIVATE) != 0 || referencedMethod.getName(referencedMethodClass).equals(ClassConstants.METHOD_NAME_INIT)) (ClassUtil.internalMethodParameterSize(referencedMethod.getDescriptor(referencedMethodClass), false)) << 8; (referencedMethod.getAccessFlags() & ClassConstants.ACC_ABSTRACT) == 0)
/** * Finds the last class member in the linked list of related class members. * @param member the given class member. * @return the last class member in the linked list. */ public static Member lastMember(Member member) { Member lastMember = member; while (lastMember.getVisitorInfo() != null && lastMember.getVisitorInfo() instanceof Member) { lastMember = (Member)lastMember.getVisitorInfo(); } return lastMember; }
/** * Links the two given class members. */ private static void link(Member member1, Member member2) { // Get the last methods in the both chains. Member lastMember1 = lastMember(member1); Member lastMember2 = lastMember(member2); // Check if both link chains aren't already ending in the same element. if (!lastMember1.equals(lastMember2)) { // Merge the two chains, with the library members last. if (lastMember2 instanceof LibraryMember) { lastMember1.setVisitorInfo(lastMember2); } else { lastMember2.setVisitorInfo(lastMember1); } } }
/** * Returns whether accessing the given class member from the given class may * have side effects when they are initialized. */ public static boolean mayHaveSideEffects(Clazz referencingClass, Clazz referencedClass, Member referencedMember) { // Is the referenced class member static or an initializer method? // Does accessing the referenced class then have side effects? return ((referencedMember.getAccessFlags() & ClassConstants.ACC_STATIC) != 0 || referencedMember.getName(referencedClass).equals(ClassConstants.METHOD_NAME_INIT)) && mayHaveSideEffects(referencingClass, referencedClass); }
public InstructionSequenceBuilder invokestatic(Clazz referencedClass, Member referencedMember) { return invokestatic(referencedClass.getName(), referencedMember.getName(referencedClass), referencedMember.getDescriptor(referencedClass), referencedClass, referencedMember); }
String name = member.getName(clazz); String descriptor = member.getDescriptor(clazz); warningPrinter != null) descriptor = member.getDescriptor(clazz); warningPrinter.print(clazz.getName(), "Warning: " + ClassUtil.externalClassName(clazz.getName()) + member.accept(clazz, memberObfuscator);
if ((referencedMethod.getAccessFlags() & ClassConstants.ACC_STATIC) != 0) else if ((referencedMethod.getAccessFlags() & ClassConstants.ACC_PRIVATE) != 0 || referencedMethod.getName(referencedMethodClass).equals(ClassConstants.METHOD_NAME_INIT)) (ClassUtil.internalMethodParameterSize(referencedMethod.getDescriptor(referencedMethodClass), false)) << 8; (referencedMethod.getAccessFlags() & ClassConstants.ACC_ABSTRACT) == 0)
/** * Lets the referenced member accept the given visitor. */ public void referencedMemberAccept(MemberVisitor memberVisitor) { if (referencedMember != null) { referencedMember.accept(referencedClass, memberVisitor); } } }
private static boolean hasFlag(Member member, int flag) { return (member.getAccessFlags() & flag) == flag; }
/** * Finds the last class member in the linked list of related class members. * @param member the given class member. * @return the last class member in the linked list. */ public static Member lastMember(Member member) { Member lastMember = member; while (lastMember.getVisitorInfo() != null && lastMember.getVisitorInfo() instanceof Member) { lastMember = (Member)lastMember.getVisitorInfo(); } return lastMember; }