/** * Applies the given visitor to the referenced method. */ public void referencedMethodAccept(MemberVisitor memberVisitor) { if (referencedMethod != null) { referencedMethod.accept(referencedClass, memberVisitor); } }
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) { // The minimum variable size is determined by the arguments. int maxLocals = ClassUtil.internalMethodParameterSize(method.getDescriptor(clazz), method.getAccessFlags()); if (codeAttribute.u2maxLocals < maxLocals) { codeAttribute.u2maxLocals = maxLocals; } }
public Method findMethod(String name, String descriptor) { for (int index = 0; index < u2methodsCount; index++) { Method method = methods[index]; if ((name == null || method.getName(this).equals(name)) && (descriptor == null || method.getDescriptor(this).equals(descriptor))) { return method; } } return null; }
public boolean mayHaveImplementations(Method method) { return (u2accessFlags & ClassConstants.INTERNAL_ACC_FINAL) == 0 && (method == null || ((method.getAccessFlags() & (ClassConstants.INTERNAL_ACC_PRIVATE | ClassConstants.INTERNAL_ACC_STATIC | ClassConstants.INTERNAL_ACC_FINAL)) == 0 && !method.getName(this).equals(ClassConstants.INTERNAL_METHOD_NAME_INIT))); }
public void enterMethod(Clazz clazz, Method method, Variables variables) { // Count the number of parameters, taking into account their categories. int parameterSize = ClassUtil.internalMethodParameterSize(method.getDescriptor(clazz), method.getAccessFlags()); // Reuse the existing parameters object, ensuring the right size. variables.reset(parameterSize); // Initialize the parameters. this.variables = variables; method.accept(clazz, parameterInitializer); this.variables = null; }
/** * Marks the hierarchy of implementing or overriding methods corresponding * to the given method, if any. */ protected void markMethodHierarchy(Clazz clazz, Method method) { if ((method.getAccessFlags() & (ClassConstants.INTERNAL_ACC_PRIVATE | ClassConstants.INTERNAL_ACC_STATIC)) == 0) { clazz.accept(new ConcreteClassDownTraveler( new ClassHierarchyTraveler(true, true, false, true, new NamedMethodVisitor(method.getName(clazz), method.getDescriptor(clazz), new MemberAccessFilter(0, ClassConstants.INTERNAL_ACC_PRIVATE | ClassConstants.INTERNAL_ACC_STATIC | ClassConstants.INTERNAL_ACC_ABSTRACT, this))))); } }
private boolean hasParameters(Clazz clazz, Method method) { return method.getDescriptor(clazz).charAt(1) != ClassConstants.METHOD_ARGUMENTS_CLOSE; } }
/** * Ensures the name of the given method name will be kept. */ private void keepMethodName(Clazz clazz, Method method) { String name = method.getName(clazz); if (!name.equals(ClassConstants.INTERNAL_METHOD_NAME_CLINIT) && !name.equals(ClassConstants.INTERNAL_METHOD_NAME_INIT)) { MemberObfuscator.setFixedNewMemberName(method, method.getName(clazz)); } } }
public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction) { // Remember the access flags. referencingMethodAccessFlags = method.getAccessFlags(); // Fix the referenced classes and class members. clazz.constantPoolEntryAccept(constantInstruction.constantIndex, this); }
public boolean mayHaveImplementations(Method method) { return (u2accessFlags & ClassConstants.INTERNAL_ACC_FINAL) == 0 && (method == null || ((method.getAccessFlags() & (ClassConstants.INTERNAL_ACC_PRIVATE | ClassConstants.INTERNAL_ACC_STATIC | ClassConstants.INTERNAL_ACC_FINAL)) == 0 && !method.getName(this).equals(ClassConstants.INTERNAL_METHOD_NAME_INIT))); }
public void enterMethod(Clazz clazz, Method method, Variables variables) { // Count the number of parameters, taking into account their categories. int parameterSize = ClassUtil.internalMethodParameterSize(method.getDescriptor(clazz), method.getAccessFlags()); // Reuse the existing parameters object, ensuring the right size. variables.reset(parameterSize); // Initialize the parameters. this.variables = variables; method.accept(clazz, parameterInitializer); this.variables = null; }
private boolean hasParameters(Clazz clazz, Method method) { return method.getDescriptor(clazz).charAt(1) != ClassConstants.METHOD_ARGUMENTS_CLOSE; } }
/** * Returns whether the given method has a new name. */ private boolean hasName(Clazz clazz, Method method) { return hasName(method) || (hasName(clazz) && method.getName(clazz).equals(ClassConstants.METHOD_NAME_INIT)); }
public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction) { // Remember the access flags. referencingMethodAccessFlags = method.getAccessFlags(); // Fix the referenced classes and class members. clazz.constantPoolEntryAccept(constantInstruction.constantIndex, this); }
public Method findMethod(String name, String descriptor) { for (int index = 0; index < u2methodsCount; index++) { Method method = methods[index]; if ((name == null || method.getName(this).equals(name)) && (descriptor == null || method.getDescriptor(this).equals(descriptor))) { return method; } } return null; }
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) { // The minimum variable size is determined by the arguments. int maxLocals = ClassUtil.internalMethodParameterSize(method.getDescriptor(clazz), method.getAccessFlags()); if (codeAttribute.u2maxLocals < maxLocals) { codeAttribute.u2maxLocals = maxLocals; } }
private boolean isSpecial(Clazz clazz, Method method) { return (method.getAccessFlags() & (ClassConstants.INTERNAL_ACC_PRIVATE | ClassConstants.INTERNAL_ACC_STATIC)) != 0 || method.getName(clazz).equals(ClassConstants.INTERNAL_METHOD_NAME_INIT); } }
public void methodsAccept(MemberVisitor memberVisitor) { for (int index = 0; index < methods.length; index++) { Method method = methods[index]; if (method != null) { method.accept(this, memberVisitor); } } }
public void enterMethod(Clazz clazz, Method method, Variables variables) { // Count the number of parameters, taking into account their categories. int parameterSize = ClassUtil.internalMethodParameterSize(method.getDescriptor(clazz), method.getAccessFlags()); // Reuse the existing parameters object, ensuring the right size. variables.reset(parameterSize); // Initialize the parameters. this.variables = variables; method.accept(clazz, parameterInitializer); this.variables = null; }
private boolean hasParameters(Clazz clazz, Method method) { return method.getDescriptor(clazz).charAt(1) != ClassConstants.METHOD_ARGUMENTS_CLOSE; } }