< prev index next >

src/java.base/share/classes/jdk/internal/org/objectweb/asm/Label.java

Print this page




 143      * {@link jdk.internal.org.objectweb.asm.tree.MethodNode#getLabelNode} method.
 144      */
 145     public Object info;
 146 
 147     /**
 148      * Flags that indicate the status of this label.
 149      *
 150      * @see #DEBUG
 151      * @see #RESOLVED
 152      * @see #RESIZED
 153      * @see #PUSHED
 154      * @see #TARGET
 155      * @see #STORE
 156      * @see #REACHABLE
 157      * @see #JSR
 158      * @see #RET
 159      */
 160     int status;
 161 
 162     /**
 163      * The line number corresponding to this label, if known.




 164      */
 165     int line;
 166 
 167     /**
 168      * The position of this label in the code, if known.
 169      */
 170     int position;
 171 
 172     /**
 173      * Number of forward references to this label, times two.
 174      */
 175     private int referenceCount;
 176 
 177     /**
 178      * Informations about forward references. Each forward reference is
 179      * described by two consecutive integers in this array: the first one is the
 180      * position of the first byte of the bytecode instruction that contains the
 181      * forward reference, while the second is the position of the first byte of
 182      * the forward reference itself. In fact the sign of the first integer
 183      * indicates if this reference uses 2 or 4 bytes, and its absolute value


 251     /**
 252      * The successor of this label, in the order they are visited. This linked
 253      * list does not include labels used for debug info only. If
 254      * {@link ClassWriter#COMPUTE_FRAMES} option is used then, in addition, it
 255      * does not contain successive labels that denote the same bytecode position
 256      * (in this case only the first label appears in this list).
 257      */
 258     Label successor;
 259 
 260     /**
 261      * The successors of this node in the control flow graph. These successors
 262      * are stored in a linked list of {@link Edge Edge} objects, linked to each
 263      * other by their {@link Edge#next} field.
 264      */
 265     Edge successors;
 266 
 267     /**
 268      * The next basic block in the basic block stack. This stack is used in the
 269      * main loop of the fix point algorithm used in the second step of the
 270      * control flow analysis algorithms. It is also used in
 271      * {@link #visitSubroutine} to avoid using a recursive method.

 272      *
 273      * @see MethodWriter#visitMaxs
 274      */
 275     Label next;
 276 
 277     // ------------------------------------------------------------------------
 278     // Constructor
 279     // ------------------------------------------------------------------------
 280 
 281     /**
 282      * Constructs a new label.
 283      */
 284     public Label() {
 285     }
 286 
 287     // ------------------------------------------------------------------------
 288     // Methods to compute offsets and to manage forward references
 289     // ------------------------------------------------------------------------
 290 
 291     /**




 143      * {@link jdk.internal.org.objectweb.asm.tree.MethodNode#getLabelNode} method.
 144      */
 145     public Object info;
 146 
 147     /**
 148      * Flags that indicate the status of this label.
 149      *
 150      * @see #DEBUG
 151      * @see #RESOLVED
 152      * @see #RESIZED
 153      * @see #PUSHED
 154      * @see #TARGET
 155      * @see #STORE
 156      * @see #REACHABLE
 157      * @see #JSR
 158      * @see #RET
 159      */
 160     int status;
 161 
 162     /**
 163      * The line number corresponding to this label, if known. If there are
 164      * several lines, each line is stored in a separate label, all linked via
 165      * their next field (these links are created in ClassReader and removed just
 166      * before visitLabel is called, so that this does not impact the rest of the
 167      * code).
 168      */
 169     int line;
 170 
 171     /**
 172      * The position of this label in the code, if known.
 173      */
 174     int position;
 175 
 176     /**
 177      * Number of forward references to this label, times two.
 178      */
 179     private int referenceCount;
 180 
 181     /**
 182      * Informations about forward references. Each forward reference is
 183      * described by two consecutive integers in this array: the first one is the
 184      * position of the first byte of the bytecode instruction that contains the
 185      * forward reference, while the second is the position of the first byte of
 186      * the forward reference itself. In fact the sign of the first integer
 187      * indicates if this reference uses 2 or 4 bytes, and its absolute value


 255     /**
 256      * The successor of this label, in the order they are visited. This linked
 257      * list does not include labels used for debug info only. If
 258      * {@link ClassWriter#COMPUTE_FRAMES} option is used then, in addition, it
 259      * does not contain successive labels that denote the same bytecode position
 260      * (in this case only the first label appears in this list).
 261      */
 262     Label successor;
 263 
 264     /**
 265      * The successors of this node in the control flow graph. These successors
 266      * are stored in a linked list of {@link Edge Edge} objects, linked to each
 267      * other by their {@link Edge#next} field.
 268      */
 269     Edge successors;
 270 
 271     /**
 272      * The next basic block in the basic block stack. This stack is used in the
 273      * main loop of the fix point algorithm used in the second step of the
 274      * control flow analysis algorithms. It is also used in
 275      * {@link #visitSubroutine} to avoid using a recursive method, and in
 276      * ClassReader to temporarily store multiple source lines for a label.
 277      *
 278      * @see MethodWriter#visitMaxs
 279      */
 280     Label next;
 281 
 282     // ------------------------------------------------------------------------
 283     // Constructor
 284     // ------------------------------------------------------------------------
 285 
 286     /**
 287      * Constructs a new label.
 288      */
 289     public Label() {
 290     }
 291 
 292     // ------------------------------------------------------------------------
 293     // Methods to compute offsets and to manage forward references
 294     // ------------------------------------------------------------------------
 295 
 296     /**


< prev index next >