Package org.apache.bcel.classfile
Class StackMapEntry
java.lang.Object
org.apache.bcel.classfile.StackMapEntry
This class represents a stack map entry recording the types of local variables and the of stack items at a given
byte code offset. See CLDC specification 5.3.1.2.
See also https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.4
union stack_map_frame { same_frame; same_locals_1_stack_item_frame; same_locals_1_stack_item_frame_extended; chop_frame; same_frame_extended; append_frame; full_frame; }
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
private ConstantPool
(package private) static final StackMapEntry[]
private int
private StackMapType[]
private StackMapType[]
-
Constructor Summary
ConstructorsConstructorDescriptionStackMapEntry
(int byteCodeOffset, int numberOfLocals, StackMapType[] typesOfLocals, int numberOfStackItems, StackMapType[] typesOfStackItems, ConstantPool constantPool) Deprecated.StackMapEntry
(int tag, int byteCodeOffset, StackMapType[] typesOfLocals, StackMapType[] typesOfStackItems, ConstantPool constantPool) Create an instanceStackMapEntry
(DataInput dataInput, ConstantPool constantPool) Constructs object from input stream. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.copy()
void
dump
(DataOutputStream file) Dump stack map entryint
int
(package private) int
Calculate stack map entry sizeint
int
private boolean
invalidFrameType
(int f) void
setByteCodeOffset
(int newOffset) void
setConstantPool
(ConstantPool constantPool) void
setFrameType
(int ft) void
setNumberOfLocals
(int n) Deprecated.since 6.0void
setNumberOfStackItems
(int n) Deprecated.since 6.0void
setTypesOfLocals
(StackMapType[] types) void
setTypesOfStackItems
(StackMapType[] types) toString()
void
updateByteCodeOffset
(int delta) Update the distance (as an offset delta) from this StackMap entry to the next.
-
Field Details
-
EMPTY_ARRAY
-
frameType
private int frameType -
byteCodeOffset
private int byteCodeOffset -
typesOfLocals
-
typesOfStackItems
-
constantPool
-
-
Constructor Details
-
StackMapEntry
StackMapEntry(DataInput dataInput, ConstantPool constantPool) throws IOException Constructs object from input stream.- Parameters:
dataInput
- Input stream- Throws:
IOException
- if an I/O error occurs.
-
StackMapEntry
@Deprecated public StackMapEntry(int byteCodeOffset, int numberOfLocals, StackMapType[] typesOfLocals, int numberOfStackItems, StackMapType[] typesOfStackItems, ConstantPool constantPool) Deprecated.Since 6.0, useStackMapEntry(int, int, StackMapType[], StackMapType[], ConstantPool)
insteadDO NOT USE- Parameters:
byteCodeOffset
-numberOfLocals
- NOT USEDtypesOfLocals
- array ofStackMapType
s of localsnumberOfStackItems
- NOT USEDtypesOfStackItems
- array otStackMapType
s of stack itemsconstantPool
- the constant pool
-
StackMapEntry
public StackMapEntry(int tag, int byteCodeOffset, StackMapType[] typesOfLocals, StackMapType[] typesOfStackItems, ConstantPool constantPool) Create an instance- Parameters:
tag
- the frameType to usebyteCodeOffset
-typesOfLocals
- array ofStackMapType
s of localstypesOfStackItems
- array otStackMapType
s of stack itemsconstantPool
- the constant pool
-
-
Method Details
-
accept
Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects. -
copy
- Returns:
- deep copy of this object
-
dump
Dump stack map entry- Parameters:
file
- Output file stream- Throws:
IOException
- if an I/O error occurs.
-
getByteCodeOffset
public int getByteCodeOffset() -
getConstantPool
- Returns:
- Constant pool used by this object.
-
getFrameType
public int getFrameType() -
getMapEntrySize
int getMapEntrySize()Calculate stack map entry size -
getNumberOfLocals
public int getNumberOfLocals() -
getNumberOfStackItems
public int getNumberOfStackItems() -
getTypesOfLocals
-
getTypesOfStackItems
-
invalidFrameType
private boolean invalidFrameType(int f) -
setByteCodeOffset
public void setByteCodeOffset(int newOffset) -
setConstantPool
- Parameters:
constantPool
- Constant pool to be used for this object.
-
setFrameType
public void setFrameType(int ft) -
setNumberOfLocals
Deprecated.since 6.0 -
setNumberOfStackItems
Deprecated.since 6.0 -
setTypesOfLocals
-
setTypesOfStackItems
-
toString
-
updateByteCodeOffset
public void updateByteCodeOffset(int delta) Update the distance (as an offset delta) from this StackMap entry to the next. Note that this might cause the frame type to change. Note also that delta may be negative.- Parameters:
delta
- offset delta
-
StackMapEntry(int, int, StackMapType[], StackMapType[], ConstantPool)
instead