|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.curjent.impl.asm.Label
public final class Label
A label represents a position in the bytecode of a method. Labels are used for jump, goto, and switch instructions, and for try catch blocks.
Field Summary | |
---|---|
(package private) int |
position
The position of this label in the code, if known. |
private int |
referenceCount
Number of forward references to this label, times two. |
(package private) static int |
RESOLVED
Indicates if the position of this label is known. |
private int[] |
srcAndRefPositions
Informations about forward references. |
(package private) int |
status
Flags that indicate the status of this label. |
(package private) static int |
TARGET
Indicates if this label is the target of a jump instruction, or the start of an exception handler. |
Constructor Summary | |
---|---|
Label()
|
Method Summary | |
---|---|
private void |
addReference(int sourcePosition,
int referencePosition)
Adds a forward reference to this label. |
(package private) void |
put(MethodWriter owner,
ByteVector out,
int source,
boolean wideOffset)
Puts a reference to this label in the bytecode of a method. |
(package private) boolean |
resolve(MethodWriter owner,
int position,
byte[] data)
Resolves all forward references to this label. |
String |
toString()
Returns a string representation of this label. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
static final int RESOLVED
static final int TARGET
int status
see #DEBUG
see #RESOLVED
see #RESIZED
see #PUSHED
see #TARGET
see #STORE
see #REACHABLE
see #JSR
see #RET
int position
private int referenceCount
private int[] srcAndRefPositions
Constructor Detail |
---|
public Label()
Method Detail |
---|
void put(MethodWriter owner, ByteVector out, int source, boolean wideOffset)
owner
- the code writer that calls this method.out
- the bytecode of the method.source
- the position of first byte of the bytecode instruction that
contains this label.wideOffset
- true if the reference must be stored in 4
bytes, or false if it must be stored with 2 bytes.
IllegalArgumentException
- if this label has not been created by
the given code writer.private void addReference(int sourcePosition, int referencePosition)
sourcePosition
- the position of the referencing instruction. This
position will be used to compute the offset of this forward
reference.referencePosition
- the position where the offset for this forward
reference must be stored.boolean resolve(MethodWriter owner, int position, byte[] data)
owner
- the code writer that calls this method.position
- the position of this label in the bytecode.data
- the bytecode of the method.
IllegalArgumentException
- if this label has already been resolved,
or if it has not been created by the given code writer.public String toString()
toString
in class Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |