private void addFields() { for (FieldDescriptor fd : fields) { String fieldName = fd.name; int fieldAccess = fd.access; String fieldDesc = fd.desc; String fieldSignature = fd.signature; Object fieldValue = fd.value; fieldAccess &= ~Opcodes.ACC_PRIVATE; fieldAccess &= ~Opcodes.ACC_PROTECTED; fieldAccess |= Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC; FieldVisitor fv = super.visitField(fieldAccess, fieldName, fieldDesc, fieldSignature, fieldValue); for (Attribute attr : fd.attributes) { fv.visitAttribute(attr); } for (String anName : fd.annotations) { fv.visitAnnotation(anName, true); } fv.visitEnd(); } }
@Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { if (visible) { annNames.add(desc); } return super.visitAnnotation(desc, visible); }
@Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { if (visible) { annNames.add(desc); } return super.visitAnnotation(desc, visible); }
private void addFields() { for (FieldDescriptor fd : fields) { String fieldName = fd.name; int fieldAccess = fd.access; String fieldDesc = fd.desc; String fieldSignature = fd.signature; Object fieldValue = fd.value; fieldAccess &= ~Opcodes.ACC_PRIVATE; fieldAccess &= ~Opcodes.ACC_PROTECTED; fieldAccess |= Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC; FieldVisitor fv = super.visitField(fieldAccess, fieldName, fieldDesc, fieldSignature, fieldValue); for (Attribute attr : fd.attributes) { fv.visitAttribute(attr); } for (String anName : fd.annotations) { fv.visitAnnotation(anName, true); } fv.visitEnd(); } }
@Override public AnnotationVisitor visitAnnotation(String annType, boolean visible) { if (visible && RESOURCE_DESC.equals(annType)) { initBlocks.add(new InitializerBlock() { @Override protected void apply(MethodVisitor mv) { mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(BTraceRuntimeBridge.class), "getInstance", "()" + Type.getDescriptor(BTraceRuntimeBridge.class)); // (stack): BTraceRuntimeBridge#top mv.visitFieldInsn(Opcodes.PUTSTATIC, ownerName, name, desc); // (stack): empty } }); } return super.visitAnnotation(annType, visible); }
fieldDesc, fieldSignature, fieldValue); if (fd.isProperty) { AnnotationVisitor av = fv.visitAnnotation(BTRACE_PROPERTY_DESC, true); if (av != null) { av.visit(BTRACE_PROPERTY_NAME, fd.propertyName); fv.visitAttribute(attr); fv.visitEnd();