src/share/classes/jdk/internal/org/objectweb/asm/util/CheckClassAdapter.java

Print this page




 117  * instruction number and dump of the failed method with information about
 118  * locals and stack slot for each instruction. For example (format is -
 119  * insnNumber locals : stack):
 120  *
 121  * <pre>
 122  * jdk.internal.org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 71: Expected I, but found .
 123  *   at jdk.internal.org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:289)
 124  *   at jdk.internal.org.objectweb.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:135)
 125  * ...
 126  * remove()V
 127  * 00000 LinkedBlockingQueue$Itr . . . . . . . .  :
 128  *   ICONST_0
 129  * 00001 LinkedBlockingQueue$Itr . . . . . . . .  : I
 130  *   ISTORE 2
 131  * 00001 LinkedBlockingQueue$Itr <b>.</b> I . . . . . .  :
 132  * ...
 133  *
 134  * 00071 LinkedBlockingQueue$Itr <b>.</b> I . . . . . .  :
 135  *   ILOAD 1
 136  * 00072 <b>?</b>
 137  *   INVOKESPECIAL java/lang/Integer.<init> (I)V
 138  * ...
 139  * </pre>
 140  *
 141  * In the above output you can see that variable 1 loaded by
 142  * <code>ILOAD 1</code> instruction at position <code>00071</code> is not
 143  * initialized. You can also see that at the beginning of the method (code
 144  * inserted by the transformation) variable 2 is initialized.
 145  *
 146  * <p>Note that when used like that, <code>CheckClassAdapter.verify()</code>
 147  * can trigger additional class loading, because it is using
 148  * <code>SimpleVerifier</code>.
 149  *
 150  * @author Eric Bruneton
 151  */
 152 public class CheckClassAdapter extends ClassVisitor {
 153 
 154     /**
 155      * The class version number.
 156      */
 157     private int version;




 117  * instruction number and dump of the failed method with information about
 118  * locals and stack slot for each instruction. For example (format is -
 119  * insnNumber locals : stack):
 120  *
 121  * <pre>
 122  * jdk.internal.org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 71: Expected I, but found .
 123  *   at jdk.internal.org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:289)
 124  *   at jdk.internal.org.objectweb.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:135)
 125  * ...
 126  * remove()V
 127  * 00000 LinkedBlockingQueue$Itr . . . . . . . .  :
 128  *   ICONST_0
 129  * 00001 LinkedBlockingQueue$Itr . . . . . . . .  : I
 130  *   ISTORE 2
 131  * 00001 LinkedBlockingQueue$Itr <b>.</b> I . . . . . .  :
 132  * ...
 133  *
 134  * 00071 LinkedBlockingQueue$Itr <b>.</b> I . . . . . .  :
 135  *   ILOAD 1
 136  * 00072 <b>?</b>
 137  *   INVOKESPECIAL java/lang/Integer.{@literal <init>} (I)V
 138  * ...
 139  * </pre>
 140  *
 141  * In the above output you can see that variable 1 loaded by
 142  * <code>ILOAD 1</code> instruction at position <code>00071</code> is not
 143  * initialized. You can also see that at the beginning of the method (code
 144  * inserted by the transformation) variable 2 is initialized.
 145  *
 146  * <p>Note that when used like that, <code>CheckClassAdapter.verify()</code>
 147  * can trigger additional class loading, because it is using
 148  * <code>SimpleVerifier</code>.
 149  *
 150  * @author Eric Bruneton
 151  */
 152 public class CheckClassAdapter extends ClassVisitor {
 153 
 154     /**
 155      * The class version number.
 156      */
 157     private int version;