1 21 package proguard.optimize.info; 22 23 import proguard.classfile.util.SimplifiedVisitor; 24 import proguard.classfile.attribute.visitor.AttributeVisitor; 25 import proguard.classfile.attribute.*; 26 import proguard.classfile.*; 27 28 33 public class CatchExceptionMarker 34 extends SimplifiedVisitor 35 implements AttributeVisitor 36 { 37 39 public void visitAnyAttribute(Clazz clazz, Attribute attribute) {} 40 41 42 public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) 43 { 44 if (codeAttribute.u2exceptionTableLength > 0) 45 { 46 markCatchException(method); 47 } 48 } 49 50 51 53 private static void markCatchException(Method method) 54 { 55 MethodOptimizationInfo info = MethodOptimizationInfo.getMethodOptimizationInfo(method); 56 if (info != null) 57 { 58 info.setCatchesExceptions(); 59 } 60 } 61 62 63 public static boolean catchesExceptions(Method method) 64 { 65 MethodOptimizationInfo info = MethodOptimizationInfo.getMethodOptimizationInfo(method); 66 return info == null || 67 info.catchesExceptions(); 68 } 69 } 70 | Popular Tags |