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:org.decojer.cavaj.readers.asm.ReadFieldVisitor.java

License:Open Source License

/**
 * Constructor.//from   w  ww  . j a  v a  2s .  co  m
 *
 * @param parentVisitor
 *            parent visitor
 */
public ReadFieldVisitor(@Nonnull final ReadClassVisitor parentVisitor) {
    super(Opcodes.ASM5);
    this.parentVisitor = parentVisitor;
    this.readAnnotationMemberVisitor = new ReadAnnotationMemberVisitor(this);
}

From source file:org.decojer.cavaj.readers.asm.ReadMethodVisitor.java

License:Open Source License

/**
 * Constructor.// w  w w.j  ava 2 s .co  m
 *
 * @param parentVisitor
 *            parent visitor
 */
public ReadMethodVisitor(@Nonnull final ReadClassVisitor parentVisitor) {
    super(Opcodes.ASM5);
    this.parentVisitor = parentVisitor;
    this.annotationVisitor = new ReadAnnotationMemberVisitor(this);
}

From source file:org.eclipse.che.plugin.dynamodule.scanner.FindDynaModuleVisitor.java

License:Open Source License

/** Default constructor. */
public FindDynaModuleVisitor() {
    super(Opcodes.ASM5);
}

From source file:org.eclipse.ocl.examples.codegen.asm5.ASM5JavaAnnotationReader.java

License:Open Source License

public @Nullable Boolean getIsNonNull(@NonNull Method method) {
    final String className = method.getDeclaringClass().getName();
    final String requiredDesc = getMethodKey(className, method.getName(), Type.getMethodDescriptor(method));
    Map<@NonNull Integer, @Nullable Boolean> typeref2state = desc2typerefValue2state.get(requiredDesc);
    Integer returnTypeReference = TypeReference.newTypeReference(TypeReference.METHOD_RETURN).getValue();
    if (typeref2state != null) {
        return typeref2state.get(returnTypeReference);
    }/*from   w w w .  j  a  v  a2  s. com*/
    if (!readClasses.add(className)) {
        return null;
    }
    //      System.out.println("getIsNonNull: " + requiredDesc + " " + Integer.toHexString(returnTypeReference));
    InputStream classStream = null;
    try {
        final int flags = ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES | ClassReader.SKIP_CODE;
        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
        String classFileName = className.replace('.', '/') + ".class";
        classStream = contextClassLoader.getResourceAsStream(classFileName);
        final ClassReader cr = new ClassReader(classStream) {

            @Override
            public void accept(ClassVisitor classVisitor, int flags) {
                super.accept(classVisitor, flags);
            }

            @Override
            public void accept(ClassVisitor classVisitor, Attribute[] attrs, int flags) {
                super.accept(classVisitor, attrs, flags);
            }

        };
        ClassVisitor cv = new ClassVisitor(Opcodes.ASM5) {
            @Override
            public void visit(int version, int access, String name, String signature, String superName,
                    String[] interfaces) {
            }

            @Override
            public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
                return null;
            }

            @Override
            public void visitAttribute(Attribute attr) {
            }

            @Override
            public void visitEnd() {
            }

            @Override
            public FieldVisitor visitField(int access, String name, String desc, String signature,
                    Object value) {
                return null;
            }

            @Override
            public void visitInnerClass(String name, String outerName, String innerName, int access) {
            }

            @Override
            public MethodVisitor visitMethod(int access, String name, String desc, String signature,
                    String[] exceptions) {
                final String methodDesc = getMethodKey(className, name, desc);// + " " + signature;
                //               System.out.println("  ClassVisitor.visitMethod: " + methodDesc);
                final HashMap<@NonNull Integer, @Nullable Boolean> typerefValue2state = new HashMap<@NonNull Integer, @Nullable Boolean>();
                desc2typerefValue2state.put(methodDesc, typerefValue2state);
                return new MethodVisitor(Opcodes.ASM5) {
                    @Override
                    public AnnotationVisitor visitAnnotation(String annotationDesc, boolean visible) {
                        return null;
                    }

                    @Override
                    public AnnotationVisitor visitAnnotationDefault() {
                        return null;
                    }

                    @Override
                    public void visitAttribute(Attribute attr) {
                    }

                    @Override
                    public void visitCode() {
                    }

                    @Override
                    public void visitEnd() {
                    }

                    @Override
                    public void visitFieldInsn(int opcode, String owner, String name, String desc) {
                    }

                    @Override
                    public void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack) {
                    }

                    @Override
                    public void visitIincInsn(int var, int increment) {
                    }

                    @Override
                    public void visitInsn(int opcode) {
                    }

                    @Override
                    public AnnotationVisitor visitInsnAnnotation(int typeRef, TypePath typePath, String desc,
                            boolean visible) {
                        return null;
                    }

                    @Override
                    public void visitIntInsn(int opcode, int operand) {
                    }

                    @Override
                    public void visitInvokeDynamicInsn(String name, String desc, Handle bsm,
                            Object... bsmArgs) {
                    }

                    @Override
                    public void visitJumpInsn(int opcode, Label label) {
                    }

                    @Override
                    public void visitLabel(Label label) {
                    }

                    @Override
                    public void visitLdcInsn(Object cst) {
                    }

                    @Override
                    public void visitLineNumber(int line, Label start) {
                    }

                    @Override
                    public void visitLocalVariable(String name, String desc, String signature, Label start,
                            Label end, int index) {
                    }

                    @Override
                    public AnnotationVisitor visitLocalVariableAnnotation(int typeRef, TypePath typePath,
                            Label[] start, Label[] end, int[] index, String desc, boolean visible) {
                        return null;
                    }

                    @Override
                    public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) {
                    }

                    @Override
                    public void visitMaxs(int maxStack, int maxLocals) {
                    }

                    @Override
                    public void visitMethodInsn(int opcode, String owner, String name, String desc) {
                    }

                    @Override
                    public void visitMethodInsn(int opcode, String owner, String name, String desc,
                            boolean itf) {
                    }

                    @Override
                    public void visitMultiANewArrayInsn(String desc, int dims) {
                    }

                    @Override
                    public void visitParameter(String name, int access) {
                    }

                    @Override
                    public AnnotationVisitor visitParameterAnnotation(int parameter, String desc,
                            boolean visible) {
                        return null;
                    }

                    @Override
                    public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels) {
                    }

                    @Override
                    public AnnotationVisitor visitTryCatchAnnotation(int typeRef, TypePath typePath,
                            String desc, boolean visible) {
                        return null;
                    }

                    @Override
                    public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
                    }

                    @Override
                    public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String desc,
                            boolean visible) {
                        //                     System.out.println("    MethodVisitor-TypeAnnotation:" + Integer.toHexString(typeRef) + " " + typePath + " " + desc + " " + visible);
                        //                     TypeReference typeReference = new TypeReference(typeRef);
                        //                     System.out.println("    : " + Integer.toHexString(typeReference.getValue()) + ":" + typeReference.getSort() + ":" + typeReference.getTypeParameterIndex());
                        if (desc.equals(nonNullDesc)) {
                            //                        System.out.println("    MethodVisitor-TypeAnnotation:" + Integer.toHexString(typeRef) + " " + typePath + " " + desc);
                            typerefValue2state.put(typeRef, true);
                        } else if (desc.equals(nullableDesc)) {
                            //                        System.out.println("    MethodVisitor-TypeAnnotation:" + Integer.toHexString(typeRef) + " " + typePath + " " + desc);
                            typerefValue2state.put(typeRef, false);
                        }
                        return null;
                    }

                    @Override
                    public void visitTypeInsn(int opcode, String type) {
                    }

                    @Override
                    public void visitVarInsn(int opcode, int var) {
                    }
                };
            }

            @Override
            public void visitOuterClass(String owner, String name, String desc) {
            }

            @Override
            public void visitSource(String source, String debug) {
            }

            @Override
            public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, String desc,
                    boolean visible) {
                //               System.out.println("  ClassVisitor-TypeAnnotation:" + typeRef + " " + typePath + " " + desc + " " + visible);
                return null;
            }
        };
        cr.accept(cv, flags);
    } catch (IOException e) {
        logger.error("Failed to read '" + className + "'", e);
    } finally {
        if (classStream != null) {
            try {
                classStream.close();
            } catch (IOException e) {
            }
        }
    }
    typeref2state = desc2typerefValue2state.get(requiredDesc);
    if (typeref2state == null) {
        return null;
    }
    Boolean state = typeref2state.get(returnTypeReference);
    //      System.out.println("  => " + state);
    return state;
}

From source file:org.eclipse.pde.api.tools.internal.builder.ReferenceExtractor.java

License:Open Source License

/**
 * Constructor//w ww .j a v  a2 s. c  o  m
 * 
 * @param type the type to extract references from
 * @param collector the listing of references to annotate from this pass
 * @param referenceKinds kinds of references to extract as defined by
 *            {@link ReferenceModifiers}
 */
public ReferenceExtractor(IApiType type, Set<Reference> collector, int referenceKinds) {
    super(Opcodes.ASM5, new ClassNode());
    fType = type;
    this.collector = collector;
    fReferenceKinds = referenceKinds;
    fIsVisitMembers = (VISIT_MEMBERS_MASK & fReferenceKinds) > 0;
    fieldtracker = new FieldTracker(this);
}

From source file:org.eclipse.pde.api.tools.internal.builder.ReferenceExtractor.java

License:Open Source License

/**
 * Constructor/*  w  ww. ja v a2  s . c  o  m*/
 * 
 * @param type
 * @param collector
 * @param referenceKinds
 * @param tracker
 */
protected ReferenceExtractor(IApiType type, Set<Reference> collector, int referenceKinds,
        FieldTracker tracker) {
    super(Opcodes.ASM5, new ClassNode());
    fType = type;
    this.collector = collector;
    fReferenceKinds = referenceKinds;
    fIsVisitMembers = (VISIT_MEMBERS_MASK & fReferenceKinds) > 0;
    fieldtracker = tracker;
}

From source file:org.eclipse.pde.api.tools.internal.comparator.SignatureDecoder.java

License:Open Source License

public SignatureDecoder(SignatureDescriptor signatureDescriptor) {
    super(Opcodes.ASM5);
    this.signatureDescriptor = signatureDescriptor;
}

From source file:org.eclipse.pde.api.tools.internal.model.TypeStructureBuilder.java

License:Open Source License

/**
 * Builds a type structure for a class file. Note that if an API component
 * is not specified, then some operations on the resulting {@link IApiType}
 * will not be available (navigating super types, member types, etc).
 * /* w w  w  . j a  va  2  s . c  o m*/
 * @param cv class file visitor
 * @param component originating API component or <code>null</code> if
 *            unknown
 */
TypeStructureBuilder(ClassVisitor cv, IApiComponent component, IApiTypeRoot file) {
    super(Opcodes.ASM5, cv);
    fComponent = component;
    fFile = file;
}

From source file:org.eclipse.pde.api.tools.internal.model.TypeStructureBuilder.java

License:Open Source License

@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
    String[] names = null;// w  w w .  ja v a 2 s.  c o m
    int laccess = access;
    if ((laccess & Opcodes.ACC_DEPRECATED) != 0) {
        laccess &= ~Opcodes.ACC_DEPRECATED;
        laccess |= ClassFileConstants.AccDeprecated;
    }
    if (exceptions != null && exceptions.length > 0) {
        names = new String[exceptions.length];
        for (int i = 0; i < names.length; i++) {
            names[i] = exceptions[i].replace('/', '.');
        }
    }
    final ApiMethod method = fType.addMethod(name, desc, signature, laccess, names);
    return new MethodVisitor(Opcodes.ASM5, super.visitMethod(laccess, name, desc, signature, exceptions)) {
        @Override
        public AnnotationVisitor visitAnnotation(String sig, boolean visible) {
            if (visible && "Ljava/lang/invoke/MethodHandle$PolymorphicSignature;".equals(sig)) { //$NON-NLS-1$
                method.isPolymorphic();
            }
            return super.visitAnnotation(sig, visible);
        }

        @Override
        public AnnotationVisitor visitAnnotationDefault() {
            return new AnnotationDefaultVisitor(method);
        }
    };
}

From source file:org.eclipse.tycho.zipcomparator.internal.ClassfileComparator.java

License:Open Source License

private String disassemble(byte[] bytes) {
    ClassReader reader = new ClassReader(bytes);
    ClassNode clazz = new ClassNode();
    reader.accept(clazz, Opcodes.ASM5 | ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES);

    // inner class list gets reordered during pack200 normalization
    if (clazz.innerClasses != null) {
        List<InnerClassNode> sorted = new ArrayList<>(clazz.innerClasses);
        Collections.sort(sorted, new Comparator<InnerClassNode>() {
            @Override/*  ww w  . ja v  a 2 s .  c o  m*/
            public int compare(InnerClassNode o1, InnerClassNode o2) {
                return o1.name.compareTo(o2.name);
            }
        });
        clazz.innerClasses = sorted;
    }

    // rendering human-readable bytecode is an eyecandy, we can compare ClassNodes directly

    StringWriter buffer = new StringWriter();
    PrintWriter writer = new PrintWriter(buffer);
    clazz.accept(new TraceClassVisitor(writer));
    writer.flush();
    writer.close();
    return buffer.toString();
}