1 21 package proguard.optimize; 22 23 import proguard.classfile.*; 24 import proguard.classfile.util.MethodLinker; 25 import proguard.classfile.visitor.*; 26 27 28 35 public class KeepMarker 36 implements ClassVisitor, 37 MemberVisitor 38 { 39 private static final Object KEPT = new Object (); 41 42 43 45 public void visitProgramClass(ProgramClass programClass) 46 { 47 markAsKept(programClass); 48 } 49 50 51 public void visitLibraryClass(LibraryClass libraryClass) 52 { 53 markAsKept(libraryClass); 54 } 55 56 57 59 public void visitProgramField(ProgramClass programClass, ProgramField programField) 60 { 61 markAsKept(programField); 62 } 63 64 65 public void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod) 66 { 67 markAsKept(MethodLinker.lastMember(programMethod)); 68 } 69 70 71 public void visitLibraryField(LibraryClass libraryClass, LibraryField libraryField) 72 { 73 markAsKept(libraryField); 74 } 75 76 77 public void visitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod) 78 { 79 markAsKept(MethodLinker.lastMember(libraryMethod)); 80 } 81 82 83 85 private static void markAsKept(VisitorAccepter visitorAccepter) 86 { 87 visitorAccepter.setVisitorInfo(KEPT); 88 } 89 90 91 public static boolean isKept(VisitorAccepter visitorAccepter) 92 { 93 return MethodLinker.lastVisitorAccepter(visitorAccepter).getVisitorInfo() == KEPT; 94 } 95 } 96 | Popular Tags |