/** * Checks the classes mentioned in the given keep specifications, printing * notes if necessary. Returns the number of notes printed. */ public void checkClassSpecifications(List keepSpecifications) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner()); // Create a visitor for marking the seeds. KeepMarker keepMarker = new KeepMarker(); ClassPoolVisitor classPoolvisitor = ClassSpecificationVisitorFactory.createClassPoolVisitor(keepSpecifications, keepMarker, keepMarker, false, true, true); // Mark the seeds. programClassPool.accept(classPoolvisitor); libraryClassPool.accept(classPoolvisitor); // Print out notes about argument types that are not being kept. programClassPool.classesAccept(new AllMemberVisitor(this)); }
@Override public void visitProgramClass(ProgramClass programClass) { // Clear the fields from any previous runs. modified = false; bootstrapMethodIndexMap = new int[ClassConstants.TYPICAL_BOOTSTRAP_METHODS_ATTRIBUTE_SIZE]; // Remove any previous visitor info. programClass.accept(new ClassCleaner()); // Mark the bootstrap methods referenced by invokeDynamic instructions. programClass.methodsAccept(this); // Shrink the bootstrap methods attribute programClass.attributesAccept(this); if (modified) { // Clean up dangling and freed up constants programClass.accept(new ConstantPoolShrinker()); } }
@Override public void visitProgramClass(ProgramClass programClass) { // Clear the fields from any previous runs. modified = false; bootstrapMethodIndexMap = new int[ClassConstants.TYPICAL_BOOTSTRAP_METHODS_ATTRIBUTE_SIZE]; // Remove any previous visitor info. programClass.accept(new ClassCleaner()); // Mark the bootstrap methods referenced by invokeDynamic instructions. programClass.methodsAccept(this); // Shrink the bootstrap methods attribute programClass.attributesAccept(this); if (modified) { // Clean up dangling and freed up constants programClass.accept(new ConstantPoolShrinker()); } }
@Override public void visitProgramClass(ProgramClass programClass) { // Clear the fields from any previous runs. modified = false; bootstrapMethodIndexMap = new int[ClassConstants.TYPICAL_BOOTSTRAP_METHODS_ATTRIBUTE_SIZE]; // Remove any previous visitor info. programClass.accept(new ClassCleaner()); // Mark the bootstrap methods referenced by invokeDynamic instructions. programClass.methodsAccept(this); // Shrink the bootstrap methods attribute programClass.attributesAccept(this); if (modified) { // Clean up dangling and freed up constants programClass.accept(new ConstantPoolShrinker()); } }
/** * Checks the classes mentioned in the given keep specifications, printing * notes if necessary. */ public void checkClassSpecifications(List keepSpecifications) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner()); // Create a visitor for marking the seeds. KeepMarker keepMarker = new KeepMarker(); ClassPoolVisitor classPoolvisitor = new KeepClassSpecificationVisitorFactory(true, true, true) .createClassPoolVisitor(keepSpecifications, keepMarker, keepMarker, keepMarker, null); // Mark the seeds. programClassPool.accept(classPoolvisitor); libraryClassPool.accept(classPoolvisitor); // Print out notes about argument types that are not being kept in // class members that are being kept. programClassPool.classesAccept( new AllMemberVisitor( new KeptMemberFilter(this))); }
/** * Checks the classes mentioned in the given keep specifications, printing * notes if necessary. */ public void checkClassSpecifications(List keepSpecifications) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner()); // Create a visitor for marking the seeds. KeepMarker keepMarker = new KeepMarker(); ClassPoolVisitor classPoolvisitor = new KeepClassSpecificationVisitorFactory(true, true, true) .createClassPoolVisitor(keepSpecifications, keepMarker, keepMarker, keepMarker, null); // Mark the seeds. programClassPool.accept(classPoolvisitor); libraryClassPool.accept(classPoolvisitor); // Print out notes about argument types that are not being kept in // class members that are being kept. programClassPool.classesAccept( new AllMemberVisitor( new KeptMemberFilter(this))); }
/** * Checks the classes mentioned in the given keep specifications, printing * notes if necessary. */ public void checkClassSpecifications(List keepSpecifications) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner()); // Create a visitor for marking the seeds. KeepMarker keepMarker = new KeepMarker(); ClassPoolVisitor classPoolvisitor = new KeepClassSpecificationVisitorFactory(true, true, true) .createClassPoolVisitor(keepSpecifications, keepMarker, keepMarker, keepMarker, null); // Mark the seeds. programClassPool.accept(classPoolvisitor); libraryClassPool.accept(classPoolvisitor); // Print out notes about argument types that are not being kept in // class members that are being kept. programClassPool.classesAccept( new AllMemberVisitor( new KeptMemberFilter(this))); }
programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner());
programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner());
programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner());
programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner());
/** * Performs subroutine inlining of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Inline all subroutines. ClassVisitor inliner = new AllMethodVisitor( new AllAttributeVisitor( new CodeSubroutineInliner())); // In Java Standard Edition, only class files from Java 6 or higher // should be preverified. if (!configuration.microEdition && !configuration.android) { inliner = new ClassVersionFilter(ClassConstants.CLASS_VERSION_1_6, inliner); } programClassPool.classesAccept(inliner); } }
/** * Performs subroutine inlining of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Inline all subroutines. ClassVisitor inliner = new AllMethodVisitor( new AllAttributeVisitor( new CodeSubroutineInliner())); // In Java Standard Edition, only class files from Java 6 or higher // should be preverified. if (!configuration.microEdition) { inliner = new ClassVersionFilter(ClassConstants.INTERNAL_CLASS_VERSION_1_6, Integer.MAX_VALUE, inliner); } programClassPool.classesAccept(inliner); } }
/** * Performs preverification of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Preverify all methods. ClassVisitor preverifier = new AllMethodVisitor( new AllAttributeVisitor( new CodePreverifier(configuration.microEdition))); // In Java Standard Edition, only class files from Java 6 or higher // should be preverified. if (!configuration.microEdition) { preverifier = new ClassVersionFilter(ClassConstants.INTERNAL_CLASS_VERSION_1_6, Integer.MAX_VALUE, preverifier); } programClassPool.classesAccept(preverifier); } }
/** * Performs subroutine inlining of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Inline all subroutines. ClassVisitor inliner = new AllMethodVisitor( new AllAttributeVisitor( new CodeSubroutineInliner())); // In Java Standard Edition, only class files from Java 6 or higher // should be preverified. if (!configuration.microEdition && !configuration.android) { inliner = new ClassVersionFilter(ClassConstants.CLASS_VERSION_1_6, inliner); } programClassPool.classesAccept(inliner); } }
/** * Performs subroutine inlining of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Inline all subroutines. ClassVisitor inliner = new AllMethodVisitor( new AllAttributeVisitor( new CodeSubroutineInliner())); // In Java Standard Edition, only class files from Java 6 or higher // should be preverified. if (!configuration.microEdition && !configuration.android) { inliner = new ClassVersionFilter(ClassConstants.CLASS_VERSION_1_6, inliner); } programClassPool.classesAccept(inliner); } }
programClassPool.classesAccept(new ClassCleaner()); libraryClassPool.classesAccept(new ClassCleaner());
/** * Performs preverification of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Preverify all methods. // Classes for JME must be preverified. // Classes for JSE 6 may optionally be preverified. // Classes for JSE 7 or higher must be preverified. programClassPool.classesAccept( new ClassVersionFilter(configuration.microEdition ? ClassConstants.CLASS_VERSION_1_0 : ClassConstants.CLASS_VERSION_1_6, new AllMethodVisitor( new AllAttributeVisitor( new CodePreverifier(configuration.microEdition))))); } }
/** * Performs preverification of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Preverify all methods. // Classes for JME must be preverified. // Classes for JSE 6 may optionally be preverified. // Classes for JSE 7 or higher must be preverified. programClassPool.classesAccept( new ClassVersionFilter(configuration.microEdition ? ClassConstants.CLASS_VERSION_1_0 : ClassConstants.CLASS_VERSION_1_6, new AllMethodVisitor( new AllAttributeVisitor( new CodePreverifier(configuration.microEdition))))); } }
/** * Performs preverification of the given program class pool. */ public void execute(ClassPool programClassPool) { // Clean up any old visitor info. programClassPool.classesAccept(new ClassCleaner()); // Preverify all methods. // Classes for JME must be preverified. // Classes for JSE 6 may optionally be preverified. // Classes for JSE 7 or higher must be preverified. programClassPool.classesAccept( new ClassVersionFilter(configuration.microEdition ? ClassConstants.CLASS_VERSION_1_0 : ClassConstants.CLASS_VERSION_1_6, new AllMethodVisitor( new AllAttributeVisitor( new CodePreverifier(configuration.microEdition))))); } }