Example usage for org.objectweb.asm Opcodes ASM5

List of usage examples for org.objectweb.asm Opcodes ASM5

Introduction

In this page you can find the example usage for org.objectweb.asm Opcodes ASM5.

Prototype

int ASM5

To view the source code for org.objectweb.asm Opcodes ASM5.

Click Source Link

Usage

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;
}