public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { desc = desc.replace(oldNameDesc, newNameDesc); if (signature != null) { signature = signature.replace(oldNameDesc, newNameDesc); } return super.visitField(access, name, desc, signature, value); }
@Override public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) { if (!shortSyntax) return super.visitField(access, name, desc, signature, value); final List<Attribute> attrs = new ArrayList<Attribute>(); final List<String> annNames = new ArrayList<String>(); return new FieldVisitor(Opcodes.ASM4) { public void visitAttribute(Attribute atrbt) { attrs.add(atrbt); } @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { if (visible) { annNames.add(desc); } return super.visitAnnotation(desc, visible); } public void visitEnd() { FieldDescriptor fd = new FieldDescriptor(access, name, desc, signature, value, attrs, annNames); fields.add(fd); } }; }
@Override public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) { if (!shortSyntax) return super.visitField(access, name, desc, signature, value); final List<Attribute> attrs = new ArrayList<Attribute>(); final List<String> annNames = new ArrayList<String>(); return new FieldVisitor(Opcodes.ASM4) { public void visitAttribute(Attribute atrbt) { attrs.add(atrbt); } @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { if (visible) { annNames.add(desc); } return super.visitAnnotation(desc, visible); } public void visitEnd() { FieldDescriptor fd = new FieldDescriptor(access, name, desc, signature, value, attrs, annNames); fields.add(fd); } }; }
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { if (! seenBTrace) { reportError("not.a.btrace.program"); } if ((access & ACC_STATIC) == 0) { reportError("agent.no.instance.variables", name); } return super.visitField(access, name, desc, signature, value); }
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(); } }
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(); } }
fieldAccess |= ACC_PUBLIC; FieldVisitor fv = super.visitField(fieldAccess, BTRACE_FIELD_PREFIX + fieldName, fieldDesc, fieldSignature, fieldValue); super.visitField(ACC_PUBLIC|ACC_STATIC, BTRACE_RUNTIME_FIELD_NAME, BTRACE_RUNTIME_DESC, null, null);