public void merge(ClassOptimizationInfo other) { this.isInstantiated |= other.isInstantiated(); this.isInstanceofed |= other.isInstanceofed(); this.isDotClassed |= other.isDotClassed(); this.isCaught |= other.isCaught(); this.isSimpleEnum |= other.isSimpleEnum(); this.isEscaping |= other.isEscaping(); this.hasSideEffects |= other.hasSideEffects(); this.containsPackageVisibleMembers |= other.containsPackageVisibleMembers(); this.invokesPackageVisibleMembers |= other.invokesPackageVisibleMembers(); }
public static boolean containsPackageVisibleMembers(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); return info == null || info.containsPackageVisibleMembers(); } }
public static Clazz getTargetClass(Clazz clazz) { Clazz targetClass = null; // Return the last target class, if any. while (true) { clazz = ClassOptimizationInfo.getClassOptimizationInfo(clazz).getTargetClass(); if (clazz == null) { return targetClass; } targetClass = clazz; } }
public static boolean isDotClassed(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); return info == null || info.isDotClassed(); } }
public static boolean isCaught(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); return info == null || info.isCaught(); } }
public static boolean isInstantiated(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); return info == null || info.isInstantiated(); } }
public static boolean isInstanceofed(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); return info == null || info.isInstanceofed(); } }
public static boolean invokesPackageVisibleMembers(Clazz clazz) { return ClassOptimizationInfo.getClassOptimizationInfo(clazz).invokesPackageVisibleMembers(); } }
/** * Returns whether the given class is escaping. */ public static boolean isClassEscaping(Clazz clazz) { return ClassOptimizationInfo.getClassOptimizationInfo(clazz).isEscaping(); } }
public static Clazz getWrappedClass(Clazz clazz) { return ClassOptimizationInfo.getClassOptimizationInfo(clazz).getWrappedClass(); } }
public static boolean isKept(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); return info != null && info.isKept(); }
public static boolean isSimpleEnum(Clazz clazz) { return ClassOptimizationInfo.getClassOptimizationInfo(clazz).isSimpleEnum(); } }
public static boolean hasSideEffects(Clazz clazz) { return ClassOptimizationInfo.getClassOptimizationInfo(clazz).hasSideEffects(); } }
public static boolean hasNoSideEffects(Clazz Clazz) { return ClassOptimizationInfo.getClassOptimizationInfo(Clazz).hasNoSideEffects(); } }
private static void markNoSideEffects(Clazz Clazz) { ClassOptimizationInfo.getClassOptimizationInfo(Clazz).setNoSideEffects(); }
public void visitLibraryClass(LibraryClass libraryClass) { // Does the class have optimization info? if (ClassOptimizationInfo.getClassOptimizationInfo(libraryClass) instanceof ProgramClassOptimizationInfo) { classVisitor.visitLibraryClass(libraryClass); } } }
public void visitProgramClass(ProgramClass programClass) { ClassOptimizationInfo.setClassOptimizationInfo(programClass); }
public static void setClassOptimizationInfo(Clazz clazz) { clazz.setVisitorInfo(new ClassOptimizationInfo()); }
private static void setPackageVisibleMembers(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); if (info != null) { info.setContainsPackageVisibleMembers(); } }
private static void setCaught(Clazz clazz) { ClassOptimizationInfo info = ClassOptimizationInfo.getClassOptimizationInfo(clazz); if (info != null) { info.setCaught(); } }