1 21 package proguard.optimize; 22 23 import proguard.classfile.*; 24 import proguard.classfile.util.SimplifiedVisitor; 25 import proguard.classfile.visitor.MemberVisitor; 26 import proguard.optimize.evaluation.*; 27 import proguard.evaluation.value.Value; 28 29 37 public class ConstantMemberFilter 38 extends SimplifiedVisitor 39 implements MemberVisitor 40 { 41 private MemberVisitor constantMemberVisitor; 42 43 44 49 public ConstantMemberFilter(MemberVisitor constantMemberVisitor) 50 { 51 this.constantMemberVisitor = constantMemberVisitor; 52 } 53 54 55 57 public void visitProgramField(ProgramClass programClass, ProgramField programField) 58 { 59 Value value = StoringInvocationUnit.getFieldValue(programField); 60 if (value != null && 61 value.isSpecific()) 62 { 63 constantMemberVisitor.visitProgramField(programClass, programField); 64 } 65 } 66 67 68 public void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod) 69 { 70 Value value = StoringInvocationUnit.getMethodReturnValue(programMethod); 71 if (value != null && 72 value.isSpecific()) 73 { 74 constantMemberVisitor.visitProgramMethod(programClass, programMethod); 75 } 76 } 77 } 78 | Popular Tags |