Package serp.bytecode.lowlevel
Class Entry
- java.lang.Object
-
- serp.bytecode.lowlevel.Entry
-
- All Implemented Interfaces:
VisitAcceptor
- Direct Known Subclasses:
ClassEntry,ComplexEntry,DoubleEntry,FloatEntry,IntEntry,InvokeDynamicEntry,LongEntry,MethodHandleEntry,MethodTypeEntry,NameAndTypeEntry,StringEntry,UTF8Entry
public abstract class Entry extends java.lang.Object implements VisitAcceptor
Base type for all constant pool entries. Entries should generally be considered immutable; modifying an entry directly can have dire consequences, and often renders the resulting class file invalid.Entries cannot be shared among constant pools.
-
-
Field Summary
Fields Modifier and Type Field Description private int_indexprivate ConstantPool_poolstatic intCLASSstatic intDOUBLEstatic intFIELDstatic intFLOATstatic intINTstatic intINTERFACEMETHODstatic intINVOKEDYNAMICstatic intLONGstatic intMETHODstatic intMETHODHANDLEstatic intMETHODTYPEstatic intNAMEANDTYPEstatic intSTRINGstatic intUTF8
-
Constructor Summary
Constructors Constructor Description Entry()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description (package private) voidafterModify(java.lang.Object key)Subclasses must call this method when their state is mutated.(package private) java.lang.ObjectbeforeModify()Subclasses must call this method before their state is mutated.static Entrycreate(int type)Create an entry based on its type code.intgetIndex()Returns the index of the entry in the owning constant pool, or 0.ConstantPoolgetPool()Returns the constant pool containing this entry, or null if none.abstract intgetType()Return the type code for this entry type.booleanisWide()Return true if this is a wide entry -- i.e.static Entryread(java.io.DataInput in)Read a single entry from the given bytecode stream and returns it.(package private) abstract voidreadData(java.io.DataInput in)This method is called after reading the entry type from bytecode.(package private) voidsetIndex(int index)Set the index of this entry within the pool.(package private) voidsetPool(ConstantPool pool)Sets the owning pool of the entry.static voidwrite(Entry entry, java.io.DataOutput out)Write the given entry to the given bytecode stream.(package private) abstract voidwriteData(java.io.DataOutput out)This method is called after writing the entry type to bytecode.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface serp.bytecode.visitor.VisitAcceptor
acceptVisit
-
-
-
-
Field Detail
-
UTF8
public static final int UTF8
- See Also:
- Constant Field Values
-
INT
public static final int INT
- See Also:
- Constant Field Values
-
FLOAT
public static final int FLOAT
- See Also:
- Constant Field Values
-
LONG
public static final int LONG
- See Also:
- Constant Field Values
-
DOUBLE
public static final int DOUBLE
- See Also:
- Constant Field Values
-
CLASS
public static final int CLASS
- See Also:
- Constant Field Values
-
STRING
public static final int STRING
- See Also:
- Constant Field Values
-
FIELD
public static final int FIELD
- See Also:
- Constant Field Values
-
METHOD
public static final int METHOD
- See Also:
- Constant Field Values
-
INTERFACEMETHOD
public static final int INTERFACEMETHOD
- See Also:
- Constant Field Values
-
NAMEANDTYPE
public static final int NAMEANDTYPE
- See Also:
- Constant Field Values
-
METHODHANDLE
public static final int METHODHANDLE
- See Also:
- Constant Field Values
-
METHODTYPE
public static final int METHODTYPE
- See Also:
- Constant Field Values
-
INVOKEDYNAMIC
public static final int INVOKEDYNAMIC
- See Also:
- Constant Field Values
-
_pool
private ConstantPool _pool
-
_index
private int _index
-
-
Method Detail
-
read
public static Entry read(java.io.DataInput in) throws java.io.IOException
Read a single entry from the given bytecode stream and returns it.- Throws:
java.io.IOException
-
write
public static void write(Entry entry, java.io.DataOutput out) throws java.io.IOException
Write the given entry to the given bytecode stream.- Throws:
java.io.IOException
-
create
public static Entry create(int type)
Create an entry based on its type code.
-
getType
public abstract int getType()
Return the type code for this entry type.
-
isWide
public boolean isWide()
Return true if this is a wide entry -- i.e. if it takes up two places in the constant pool. Returns false by default.
-
getPool
public ConstantPool getPool()
Returns the constant pool containing this entry, or null if none.
-
getIndex
public int getIndex()
Returns the index of the entry in the owning constant pool, or 0.
-
readData
abstract void readData(java.io.DataInput in) throws java.io.IOExceptionThis method is called after reading the entry type from bytecode. It should read all the data for this entry from the given stream.- Throws:
java.io.IOException
-
writeData
abstract void writeData(java.io.DataOutput out) throws java.io.IOExceptionThis method is called after writing the entry type to bytecode. It should write all data for this entry to the given stream.- Throws:
java.io.IOException
-
beforeModify
java.lang.Object beforeModify()
Subclasses must call this method before their state is mutated.
-
afterModify
void afterModify(java.lang.Object key)
Subclasses must call this method when their state is mutated.
-
setPool
void setPool(ConstantPool pool)
Sets the owning pool of the entry.
-
setIndex
void setIndex(int index)
Set the index of this entry within the pool.
-
-