1 21 package proguard.optimize; 22 23 import proguard.classfile.*; 24 import proguard.classfile.attribute.visitor.AttributeVisitor; 25 import proguard.classfile.editor.*; 26 import proguard.classfile.util.*; 27 import proguard.classfile.visitor.MemberVisitor; 28 import proguard.optimize.info.ParameterUsageMarker; 29 30 39 public class MethodStaticizer 40 extends SimplifiedVisitor 41 implements MemberVisitor, 42 AttributeVisitor 43 { 44 private MemberVisitor extraStaticMemberVisitor; 45 46 47 50 public MethodStaticizer() 51 { 52 this(null); 53 } 54 55 56 61 public MethodStaticizer(MemberVisitor extraStaticMemberVisitor) 62 { 63 this.extraStaticMemberVisitor = extraStaticMemberVisitor; 64 } 65 66 67 69 public void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod) 70 { 71 if (!ParameterUsageMarker.isParameterUsed(programMethod, 0)) 73 { 74 programMethod.u2accessFlags = 76 (programMethod.getAccessFlags() & ~ClassConstants.INTERNAL_ACC_FINAL) | 77 ClassConstants.INTERNAL_ACC_STATIC; 78 79 if (extraStaticMemberVisitor != null) 81 { 82 extraStaticMemberVisitor.visitProgramMethod(programClass, programMethod); 83 } 84 } 85 } 86 } 87 | Popular Tags |