--- old/src/share/classes/jdk/internal/org/objectweb/asm/util/TraceClassVisitor.java Thu Apr 25 10:11:38 2013 +++ new/src/share/classes/jdk/internal/org/objectweb/asm/util/TraceClassVisitor.java Thu Apr 25 10:11:37 2013 @@ -30,7 +30,6 @@ * * ASM: a very small and fast Java bytecode manipulation framework * Copyright (c) 2000-2011 INRIA, France Telecom - * Copyright (c) 2011 Google * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -67,15 +66,20 @@ import jdk.internal.org.objectweb.asm.FieldVisitor; import jdk.internal.org.objectweb.asm.MethodVisitor; import jdk.internal.org.objectweb.asm.Opcodes; +import jdk.internal.org.objectweb.asm.TypePath; /** * A {@link ClassVisitor} that prints the classes it visits with a * {@link Printer}. This class visitor can be used in the middle of a class * visitor chain to trace the class that is visited at a given point in this - * chain. This may be useful for debugging purposes.
The trace printed when - * visiting the Hello class is the following:
+ * chain. This may be useful for debugging purposes. + *+ * The trace printed when visiting the Hello class is the following: + *
+ *
* - *where Hello is defined by:// class version 49.0 (49) // access flags 0x21 public class Hello { + ** - *+ * // class version 49.0 (49) // access flags 0x21 public class Hello { * * // compiled from: Hello.java * @@ -85,14 +89,21 @@ * // access flags 0x9 public static main ([Ljava/lang/String;)V GETSTATIC * java/lang/System out Ljava/io/PrintStream; LDC "hello" * INVOKEVIRTUAL java/io/PrintStream println (Ljava/lang/String;)V RETURN - * MAXSTACK = 2 MAXLOCALS = 1 }+ * MAXSTACK = 2 MAXLOCALS = 1 } + *
+ *where Hello is defined by: + *+ *
* - ** @@ -114,7 +125,8 @@ /** * Constructs a new {@link TraceClassVisitor}. * - * @param pw the print writer to be used to print the class. + * @param pw + * the print writer to be used to print the class. */ public TraceClassVisitor(final PrintWriter pw) { this(null, pw); @@ -123,9 +135,11 @@ /** * Constructs a new {@link TraceClassVisitor}. * - * @param cv the {@link ClassVisitor} to which this visitor delegates calls. - * May be null. - * @param pw the print writer to be used to print the class. + * @param cv + * the {@link ClassVisitor} to which this visitor delegates + * calls. May be null. + * @param pw + * the print writer to be used to print the class. */ public TraceClassVisitor(final ClassVisitor cv, final PrintWriter pw) { this(cv, new Textifier(), pw); @@ -134,32 +148,27 @@ /** * Constructs a new {@link TraceClassVisitor}. * - * @param cv the {@link ClassVisitor} to which this visitor delegates calls. - * May be null. - * @param p the object that actually converts visit events into text. - * @param pw the print writer to be used to print the class. May be null if - * you simply want to use the result via - * {@link Printer#getText()}, instead of printing it. + * @param cv + * the {@link ClassVisitor} to which this visitor delegates + * calls. May be null. + * @param p + * the object that actually converts visit events into text. + * @param pw + * the print writer to be used to print the class. May be null if + * you simply want to use the result via + * {@link Printer#getText()}, instead of printing it. */ - public TraceClassVisitor( - final ClassVisitor cv, - final Printer p, - final PrintWriter pw) - { - super(Opcodes.ASM4, cv); + public TraceClassVisitor(final ClassVisitor cv, final Printer p, + final PrintWriter pw) { + super(Opcodes.ASM5, cv); this.pw = pw; this.p = p; } @Override - public void visit( - final int version, - final int access, - final String name, - final String signature, - final String superName, - final String[] interfaces) - { + public void visit(final int version, final int access, final String name, + final String signature, final String superName, + final String[] interfaces) { p.visit(version, access, name, signature, superName, interfaces); super.visit(version, access, name, signature, superName, interfaces); } @@ -171,20 +180,15 @@ } @Override - public void visitOuterClass( - final String owner, - final String name, - final String desc) - { + public void visitOuterClass(final String owner, final String name, + final String desc) { p.visitOuterClass(owner, name, desc); super.visitOuterClass(owner, name, desc); } @Override - public AnnotationVisitor visitAnnotation( - final String desc, - final boolean visible) - { + public AnnotationVisitor visitAnnotation(final String desc, + final boolean visible) { Printer p = this.p.visitClassAnnotation(desc, visible); AnnotationVisitor av = cv == null ? null : cv.visitAnnotation(desc, visible); @@ -192,6 +196,16 @@ } @Override + public AnnotationVisitor visitTypeAnnotation(int typeRef, + TypePath typePath, String desc, boolean visible) { + Printer p = this.p.visitClassTypeAnnotation(typeRef, typePath, desc, + visible); + AnnotationVisitor av = cv == null ? null : cv.visitTypeAnnotation( + typeRef, typePath, desc, visible); + return new TraceAnnotationVisitor(av, p); + } + + @Override public void visitAttribute(final Attribute attr) { p.visitClassAttribute(attr); super.visitAttribute(attr); @@ -198,55 +212,28 @@ } @Override - public void visitInnerClass( - final String name, - final String outerName, - final String innerName, - final int access) - { + public void visitInnerClass(final String name, final String outerName, + final String innerName, final int access) { p.visitInnerClass(name, outerName, innerName, access); super.visitInnerClass(name, outerName, innerName, access); } @Override - public FieldVisitor visitField( - final int access, - final String name, - final String desc, - final String signature, - final Object value) - { - Printer p = this.p.visitField(access, - name, - desc, - signature, - value); - FieldVisitor fv = cv == null ? null : cv.visitField(access, - name, - desc, - signature, - value); + public FieldVisitor visitField(final int access, final String name, + final String desc, final String signature, final Object value) { + Printer p = this.p.visitField(access, name, desc, signature, value); + FieldVisitor fv = cv == null ? null : cv.visitField(access, name, desc, + signature, value); return new TraceFieldVisitor(fv, p); } @Override - public MethodVisitor visitMethod( - final int access, - final String name, - final String desc, - final String signature, - final String[] exceptions) - { - Printer p = this.p.visitMethod(access, - name, - desc, - signature, + public MethodVisitor visitMethod(final int access, final String name, + final String desc, final String signature, final String[] exceptions) { + Printer p = this.p.visitMethod(access, name, desc, signature, exceptions); - MethodVisitor mv = cv == null ? null : cv.visitMethod(access, - name, - desc, - signature, - exceptions); + MethodVisitor mv = cv == null ? null : cv.visitMethod(access, name, + desc, signature, exceptions); return new TraceMethodVisitor(mv, p); }public class Hello { + ** *+ * public class Hello { * - * public static void main(String[] args) { - * System.out.println("hello"); } }+ * public static void main(String[] args) { + * System.out.println("hello"); + * } + * } + *