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: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(); }