List of usage examples for org.objectweb.asm Opcodes ASM5
int ASM5
To view the source code for org.objectweb.asm Opcodes ASM5.
Click Source Link
From source file:com.android.build.gradle.shrinker.ClassStructureVisitor.java
License:Apache License
@Override public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { final T field = mGraph.addMember(mClass, name, desc, access); FieldVisitor superVisitor = super.visitField(access, name, desc, signature, value); return new FieldVisitor(Opcodes.ASM5, superVisitor) { @Override/*from w ww . j a v a 2 s .c o m*/ public AnnotationVisitor visitAnnotation(String desc, boolean visible) { mGraph.addAnnotation(field, Type.getType(desc).getInternalName()); return super.visitAnnotation(desc, visible); } }; }
From source file:com.android.build.gradle.shrinker.DependencyFinderVisitor.java
License:Apache License
DependencyFinderVisitor(ShrinkerGraph<T> graph, ClassVisitor cv) {
super(Opcodes.ASM5, cv);
mGraph = graph;
}
From source file:com.android.build.gradle.shrinker.DependencyRemoverVisitor.java
License:Apache License
public DependencyRemoverVisitor(ShrinkerGraph<T> graph, ClassVisitor cv) { super(Opcodes.ASM5, cv); mGraph = graph; }
From source file:com.android.build.gradle.shrinker.FilterMembersVisitor.java
License:Apache License
public FilterMembersVisitor(Set<String> members, Predicate<String> classKeptPredicate, ClassVisitor cv) { super(Opcodes.ASM5, cv); mMembers = members;/*from w ww. j av a2s .c o m*/ mClassKeptPredicate = classKeptPredicate; }
From source file:com.android.build.gradle.shrinker.FullRunShrinker.java
License:Apache License
/** Updates the graph with nodes and edges based on the given class file. */ private void processProgramClassFile(byte[] bytes, @NonNull File classFile, @NonNull final PostProcessingData<T> postProcessingData) { ClassNode classNode = new ClassNode(Opcodes.ASM5); ClassVisitor depsFinder = new DependencyFinderVisitor<T>(mGraph, classNode) { @Override/* w w w. j a v a 2 s . com*/ protected void handleDependency(T source, T target, DependencyType type) { mGraph.addDependency(source, target, type); } @Override protected void handleMultipleInheritance(T klass) { postProcessingData.getMultipleInheritance().add(klass); } @Override protected void handleVirtualMethod(T method) { postProcessingData.getVirtualMethods().add(method); } @Override protected void handleInterfaceInheritance(T klass) { postProcessingData.getInterfaceInheritance().add(klass); } @Override protected void handleUnresolvedReference(PostProcessingData.UnresolvedReference<T> reference) { postProcessingData.getUnresolvedReferences().add(reference); } }; ClassVisitor structureVisitor = new ClassStructureVisitor<>(mGraph, classFile, depsFinder); ClassReader classReader = new ClassReader(bytes); classReader.accept(structureVisitor, ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES); }
From source file:com.android.build.gradle.shrinker.IncrementalRunVisitor.java
License:Apache License
@Override public FieldVisitor visitField(int access, final String name, String desc, String signature, Object value) { T field = mGraph.getMemberReference(mClassName, name, desc); if (!mFields.remove(field)) { throw new IncrementalShrinker.IncrementalRunImpossibleException( String.format("Field %s.%s:%s added.", mClassName, name, desc)); }//from ww w . j a v a 2s .c o m if (mGraph.getModifiers(field) != access) { throw new IncrementalShrinker.IncrementalRunImpossibleException( String.format("Field %s.%s:%s modifiers changed.", mClassName, name, desc)); } final Set<String> memberAnnotations = Sets.newHashSet(mGraph.getAnnotations(field)); FieldVisitor superVisitor = super.visitField(access, name, desc, signature, value); return new FieldVisitor(Opcodes.ASM5, superVisitor) { @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { checkForAddedAnnotation(desc, memberAnnotations, mClassName + "." + name); return super.visitAnnotation(desc, visible); } @Override public void visitEnd() { checkForRemovedAnnotation(memberAnnotations, mClassName + "." + name); super.visitEnd(); } }; }
From source file:com.android.build.gradle.shrinker.IncrementalRunVisitor.java
License:Apache License
@Override public MethodVisitor visitMethod(int access, final String name, String desc, String signature, String[] exceptions) {//w ww. j a va 2s. c om final T method = mGraph.getMemberReference(mClassName, name, desc); if (!mMethods.remove(method)) { throw new IncrementalShrinker.IncrementalRunImpossibleException( String.format("Method %s.%s:%s added.", mClassName, name, desc)); } if (mGraph.getModifiers(method) != access) { throw new IncrementalShrinker.IncrementalRunImpossibleException( String.format("Method %s.%s:%s modifiers changed.", mClassName, name, desc)); } final Set<String> memberAnnotations = Sets.newHashSet(mGraph.getAnnotations(method)); MethodVisitor superVisitor = super.visitMethod(access, name, desc, signature, exceptions); return new MethodVisitor(Opcodes.ASM5, superVisitor) { @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { checkForAddedAnnotation(desc, memberAnnotations, mClassName + "." + name); return super.visitAnnotation(desc, visible); } @Override public void visitEnd() { checkForRemovedAnnotation(memberAnnotations, mClassName + "." + name); super.visitEnd(); } }; }
From source file:com.android.build.gradle.shrinker.RewriteOutputVisitor.java
License:Apache License
public RewriteOutputVisitor(@NonNull Set<String> members, @NonNull Predicate<String> classKeptPredicate, @Nullable BytecodeVersion bytecodeVersion, @NonNull ClassVisitor cv) { super(Opcodes.ASM5, cv); // Make sure all the information here (i.e. all changes we make to bytecode) are reflected // in IncrementalShrinker.State. mMembers = members;//from w ww. j a va 2 s . co m mClassKeptPredicate = classKeptPredicate; mBytecodeVersion = bytecodeVersion; mRemapper = new ToObjectRemapper(); }
From source file:com.android.build.gradle.shrinker.RewriteOutputVisitor.java
License:Apache License
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { signature = mRemapper.mapSignature(signature, false); if (!mMembers.contains(name + ":" + desc)) { return null; } else {//from ww w .j a v a2 s. c o m return new MethodVisitor(Opcodes.ASM5, super.visitMethod(access, name, desc, signature, exceptions)) { @Override public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) { signature = mRemapper.mapSignature(signature, true); super.visitLocalVariable(name, desc, signature, start, end, index); } }; } }
From source file:com.android.builder.shrinker.ClassStructureVisitor.java
License:Apache License
public ClassStructureVisitor(ShrinkerGraph<T> graph, File classFile, ClassVisitor cv) { super(Opcodes.ASM5, cv); mClassFile = classFile; mGraph = graph; }