public final class ConstPool
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static int |
CONST_Class
CONSTANT_Class |
static int |
CONST_Double
CONSTANT_Double |
static int |
CONST_Fieldref
CONSTANT_Fieldref |
static int |
CONST_Float
CONSTANT_Float |
static int |
CONST_Integer
CONSTANT_Integer |
static int |
CONST_InterfaceMethodref
CONSTANT_InterfaceMethodref |
static int |
CONST_Long
CONSTANT_Long |
static int |
CONST_MethodHandle
Cosnt_MethodHandle |
static int |
CONST_Methodref
CONSTANT_Methodref |
static int |
CONST_NameAndType
CONSTANT_NameAndType |
static int |
CONST_String
CONSTANT_String |
static int |
CONST_Utf8
CONSTANT_Utf8 |
(package private) LongVector |
items |
(package private) java.util.HashMap |
itemsCache |
(package private) int |
numOfItems |
static int |
REF_getField
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_getStatic
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_invokeInterface
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_invokeSpecial
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_invokeStatic
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_invokeVirtual
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_newInvokeSpecial
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_putField
reference_kind of CONSTANT_MethodHandle_info . |
static int |
REF_putStatic
reference_kind of CONSTANT_MethodHandle_info . |
static CtClass |
THIS
Represents the class using this constant pool table.
|
(package private) int |
thisClassInfo |
Constructor and Description |
---|
ConstPool(java.io.DataInputStream in)
Constructs a constant pool table from the given byte stream.
|
ConstPool(java.lang.String thisclass)
Constructs a constant pool table.
|
Modifier and Type | Method and Description |
---|---|
int |
addClassInfo(CtClass c)
Adds a new
CONSTANT_Class_info structure. |
int |
addClassInfo(java.lang.String qname)
Adds a new
CONSTANT_Class_info structure. |
(package private) int |
addConstInfoPadding() |
int |
addDoubleInfo(double d)
Adds a new
CONSTANT_Double_info
structure. |
int |
addFieldrefInfo(int classInfo,
int nameAndTypeInfo)
Adds a new
CONSTANT_Fieldref_info structure. |
int |
addFieldrefInfo(int classInfo,
java.lang.String name,
java.lang.String type)
Adds a new
CONSTANT_Fieldref_info structure. |
int |
addFloatInfo(float f)
Adds a new
CONSTANT_Float_info
structure. |
int |
addIntegerInfo(int i)
Adds a new
CONSTANT_Integer_info
structure. |
int |
addInterfaceMethodrefInfo(int classInfo,
int nameAndTypeInfo)
Adds a new
CONSTANT_InterfaceMethodref_info
structure. |
int |
addInterfaceMethodrefInfo(int classInfo,
java.lang.String name,
java.lang.String type)
Adds a new
CONSTANT_InterfaceMethodref_info
structure. |
int |
addInvokeDynamicInfo(int bootstrap,
int nameAndType)
Adds a new
CONSTANT_InvokeDynamic_info
structure. |
private int |
addItem(ConstInfo info) |
private int |
addItem0(ConstInfo info) |
int |
addLongInfo(long l)
Adds a new
CONSTANT_Long_info
structure. |
int |
addMethodHandleInfo(int kind,
int index)
Adds a new
CONSTANT_MethodHandle_info
structure. |
int |
addMethodrefInfo(int classInfo,
int nameAndTypeInfo)
Adds a new
CONSTANT_Methodref_info structure. |
int |
addMethodrefInfo(int classInfo,
java.lang.String name,
java.lang.String type)
Adds a new
CONSTANT_Methodref_info structure. |
int |
addMethodTypeInfo(int desc)
Adds a new
CONSTANT_MethodType_info
structure. |
int |
addNameAndTypeInfo(int name,
int type)
Adds a new
CONSTANT_NameAndType_info structure. |
int |
addNameAndTypeInfo(java.lang.String name,
java.lang.String type)
Adds a new
CONSTANT_NameAndType_info structure. |
int |
addStringInfo(java.lang.String str)
Adds a new
CONSTANT_String_info
structure. |
int |
addUtf8Info(java.lang.String utf8)
Adds a new
CONSTANT_Utf8_info
structure. |
int |
copy(int n,
ConstPool dest,
java.util.Map classnames)
Copies the n-th item in this ConstPool object into the destination
ConstPool object.
|
java.lang.String |
eqMember(java.lang.String membername,
java.lang.String desc,
int index)
Determines whether
CONSTANT_Methodref_info ,
CONSTANT_Fieldref_info , or
CONSTANT_InterfaceMethodref_info structure
at the given index has the name and the descriptor
given as the arguments. |
java.lang.String |
getClassInfo(int index)
Reads
CONSTANT_Class_info structure
at the given index. |
java.lang.String |
getClassInfoByDescriptor(int index)
Reads
CONSTANT_Class_info structure
at the given index. |
java.lang.String |
getClassName()
Returns the name of the class using this constant pool table.
|
java.util.Set |
getClassNames()
Get all the class names.
|
double |
getDoubleInfo(int index)
Reads
CONSTANT_Double_info structure
at the given index. |
int |
getFieldrefClass(int index)
Reads the
class_index field of the
CONSTANT_Fieldref_info structure
at the given index. |
java.lang.String |
getFieldrefClassName(int index)
Reads the
class_index field of the
CONSTANT_Fieldref_info structure
at the given index. |
java.lang.String |
getFieldrefName(int index)
Reads the
name_index field of the
CONSTANT_NameAndType_info structure
indirectly specified by the given index. |
int |
getFieldrefNameAndType(int index)
Reads the
name_and_type_index field of the
CONSTANT_Fieldref_info structure
at the given index. |
java.lang.String |
getFieldrefType(int index)
Reads the
descriptor_index field of the
CONSTANT_NameAndType_info structure
indirectly specified by the given index. |
float |
getFloatInfo(int index)
Reads
CONSTANT_Float_info structure
at the given index. |
int |
getIntegerInfo(int index)
Reads
CONSTANT_Integer_info structure
at the given index. |
int |
getInterfaceMethodrefClass(int index)
Reads the
class_index field of the
CONSTANT_InterfaceMethodref_info structure
at the given index. |
java.lang.String |
getInterfaceMethodrefClassName(int index)
Reads the
class_index field of the
CONSTANT_InterfaceMethodref_info structure
at the given index. |
java.lang.String |
getInterfaceMethodrefName(int index)
Reads the
name_index field of the
CONSTANT_NameAndType_info structure
indirectly specified by the given index. |
int |
getInterfaceMethodrefNameAndType(int index)
Reads the
name_and_type_index field of the
CONSTANT_InterfaceMethodref_info structure
at the given index. |
java.lang.String |
getInterfaceMethodrefType(int index)
Reads the
descriptor_index field of the
CONSTANT_NameAndType_info structure
indirectly specified by the given index. |
int |
getInvokeDynamicBootstrap(int index)
Reads the
bootstrap_method_attr_index field of the
CONSTANT_InvokeDynamic_info structure
at the given index. |
int |
getInvokeDynamicNameAndType(int index)
Reads the
name_and_type_index field of the
CONSTANT_InvokeDynamic_info structure
at the given index. |
java.lang.String |
getInvokeDynamicType(int index)
Reads the
descriptor_index field of the
CONSTANT_NameAndType_info structure
indirectly specified by the given index. |
(package private) ConstInfo |
getItem(int n) |
java.lang.Object |
getLdcValue(int index)
Reads
CONSTANT_Integer_info , _Float_info ,
_Long_info , _Double_info , or
_String_info structure. |
long |
getLongInfo(int index)
Reads
CONSTANT_Long_info structure
at the given index. |
int |
getMemberClass(int index)
Reads the
class_index field of the
CONSTANT_Fieldref_info ,
CONSTANT_Methodref_info ,
or CONSTANT_Interfaceref_info ,
structure at the given index. |
int |
getMemberNameAndType(int index)
Reads the
name_and_type_index field of the
CONSTANT_Fieldref_info ,
CONSTANT_Methodref_info ,
or CONSTANT_Interfaceref_info ,
structure at the given index. |
int |
getMethodHandleIndex(int index)
Reads the
reference_index field of the
CONSTANT_MethodHandle_info structure
at the given index. |
int |
getMethodHandleKind(int index)
Reads the
reference_kind field of the
CONSTANT_MethodHandle_info structure
at the given index. |
int |
getMethodrefClass(int index)
Reads the
class_index field of the
CONSTANT_Methodref_info structure
at the given index. |
java.lang.String |
getMethodrefClassName(int index)
Reads the
class_index field of the
CONSTANT_Methodref_info structure
at the given index. |
java.lang.String |
getMethodrefName(int index)
Reads the
name_index field of the
CONSTANT_NameAndType_info structure
indirectly specified by the given index. |
int |
getMethodrefNameAndType(int index)
Reads the
name_and_type_index field of the
CONSTANT_Methodref_info structure
at the given index. |
java.lang.String |
getMethodrefType(int index)
Reads the
descriptor_index field of the
CONSTANT_NameAndType_info structure
indirectly specified by the given index. |
int |
getMethodTypeInfo(int index)
Reads the
descriptor_index field of the
CONSTANT_MethodType_info structure
at the given index. |
int |
getNameAndTypeDescriptor(int index)
Reads the
descriptor_index field of the
CONSTANT_NameAndType_info structure
at the given index. |
int |
getNameAndTypeName(int index)
Reads the
name_index field of the
CONSTANT_NameAndType_info structure
at the given index. |
int |
getSize()
Returns the number of entries in this table.
|
java.lang.String |
getStringInfo(int index)
Reads
CONSTANT_String_info structure
at the given index. |
int |
getTag(int index)
Returns the
tag field of the constant pool table
entry at the given index. |
int |
getThisClassInfo()
Returns the index of
CONSTANT_Class_info structure
specifying the class using this constant pool table. |
java.lang.String |
getUtf8Info(int index)
Reads
CONSTANT_utf8_info structure
at the given index. |
int |
isConstructor(java.lang.String classname,
int index)
Determines whether
CONSTANT_Methodref_info
structure at the given index represents the constructor
of the given class. |
int |
isMember(java.lang.String classname,
java.lang.String membername,
int index)
Determines whether
CONSTANT_Methodref_info ,
CONSTANT_Fieldref_info , or
CONSTANT_InterfaceMethodref_info structure
at the given index represents the member with the specified
name and declaring class. |
private static java.util.HashMap |
makeItemsCache(LongVector items) |
void |
print()
Prints the contents of the constant pool table.
|
void |
print(java.io.PrintWriter out)
Prints the contents of the constant pool table.
|
(package private) void |
prune() |
private void |
read(java.io.DataInputStream in) |
private int |
readOne(java.io.DataInputStream in) |
void |
renameClass(java.util.Map classnames)
Replaces all occurrences of class names.
|
void |
renameClass(java.lang.String oldName,
java.lang.String newName)
Replaces all occurrences of a class name.
|
(package private) void |
setThisClassInfo(int i) |
void |
write(java.io.DataOutputStream out)
Writes the contents of the constant pool table.
|
LongVector items
int numOfItems
int thisClassInfo
java.util.HashMap itemsCache
public static final int CONST_Class
CONSTANT_Class
public static final int CONST_Fieldref
CONSTANT_Fieldref
public static final int CONST_Methodref
CONSTANT_Methodref
public static final int CONST_InterfaceMethodref
CONSTANT_InterfaceMethodref
public static final int CONST_String
CONSTANT_String
public static final int CONST_Integer
CONSTANT_Integer
public static final int CONST_Float
CONSTANT_Float
public static final int CONST_Long
CONSTANT_Long
public static final int CONST_Double
CONSTANT_Double
public static final int CONST_NameAndType
CONSTANT_NameAndType
public static final int CONST_Utf8
CONSTANT_Utf8
public static final int CONST_MethodHandle
Cosnt_MethodHandle
public static final CtClass THIS
public static final int REF_getField
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_getStatic
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_putField
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_putStatic
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_invokeVirtual
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_invokeStatic
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_invokeSpecial
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_newInvokeSpecial
reference_kind
of CONSTANT_MethodHandle_info
.public static final int REF_invokeInterface
reference_kind
of CONSTANT_MethodHandle_info
.public ConstPool(java.lang.String thisclass)
thisclass
- the name of the class using this constant
pool tablepublic ConstPool(java.io.DataInputStream in) throws java.io.IOException
in
- byte stream.java.io.IOException
void prune()
public int getSize()
public java.lang.String getClassName()
public int getThisClassInfo()
CONSTANT_Class_info
structure
specifying the class using this constant pool table.void setThisClassInfo(int i)
ConstInfo getItem(int n)
public int getTag(int index)
tag
field of the constant pool table
entry at the given index.public java.lang.String getClassInfo(int index)
CONSTANT_Class_info
structure
at the given index.name_index
. If the type is an array
type, this method returns an encoded name like
[Ljava.lang.Object;
(note that the separators
are not slashes but dots).ClassPool.getCtClass(String)
public java.lang.String getClassInfoByDescriptor(int index)
CONSTANT_Class_info
structure
at the given index.name_index
.ClassPool.getCtClass(String)
public int getNameAndTypeName(int index)
name_index
field of the
CONSTANT_NameAndType_info
structure
at the given index.public int getNameAndTypeDescriptor(int index)
descriptor_index
field of the
CONSTANT_NameAndType_info
structure
at the given index.public int getMemberClass(int index)
class_index
field of the
CONSTANT_Fieldref_info
,
CONSTANT_Methodref_info
,
or CONSTANT_Interfaceref_info
,
structure at the given index.public int getMemberNameAndType(int index)
name_and_type_index
field of the
CONSTANT_Fieldref_info
,
CONSTANT_Methodref_info
,
or CONSTANT_Interfaceref_info
,
structure at the given index.public int getFieldrefClass(int index)
class_index
field of the
CONSTANT_Fieldref_info
structure
at the given index.public java.lang.String getFieldrefClassName(int index)
class_index
field of the
CONSTANT_Fieldref_info
structure
at the given index.class_index
.public int getFieldrefNameAndType(int index)
name_and_type_index
field of the
CONSTANT_Fieldref_info
structure
at the given index.public java.lang.String getFieldrefName(int index)
name_index
field of the
CONSTANT_NameAndType_info
structure
indirectly specified by the given index.index
- an index to a CONSTANT_Fieldref_info
.public java.lang.String getFieldrefType(int index)
descriptor_index
field of the
CONSTANT_NameAndType_info
structure
indirectly specified by the given index.index
- an index to a CONSTANT_Fieldref_info
.public int getMethodrefClass(int index)
class_index
field of the
CONSTANT_Methodref_info
structure
at the given index.public java.lang.String getMethodrefClassName(int index)
class_index
field of the
CONSTANT_Methodref_info
structure
at the given index.class_index
.public int getMethodrefNameAndType(int index)
name_and_type_index
field of the
CONSTANT_Methodref_info
structure
at the given index.public java.lang.String getMethodrefName(int index)
name_index
field of the
CONSTANT_NameAndType_info
structure
indirectly specified by the given index.index
- an index to a CONSTANT_Methodref_info
.public java.lang.String getMethodrefType(int index)
descriptor_index
field of the
CONSTANT_NameAndType_info
structure
indirectly specified by the given index.index
- an index to a CONSTANT_Methodref_info
.public int getInterfaceMethodrefClass(int index)
class_index
field of the
CONSTANT_InterfaceMethodref_info
structure
at the given index.public java.lang.String getInterfaceMethodrefClassName(int index)
class_index
field of the
CONSTANT_InterfaceMethodref_info
structure
at the given index.class_index
.public int getInterfaceMethodrefNameAndType(int index)
name_and_type_index
field of the
CONSTANT_InterfaceMethodref_info
structure
at the given index.public java.lang.String getInterfaceMethodrefName(int index)
name_index
field of the
CONSTANT_NameAndType_info
structure
indirectly specified by the given index.index
- an index to
a CONSTANT_InterfaceMethodref_info
.public java.lang.String getInterfaceMethodrefType(int index)
descriptor_index
field of the
CONSTANT_NameAndType_info
structure
indirectly specified by the given index.index
- an index to
a CONSTANT_InterfaceMethodref_info
.public java.lang.Object getLdcValue(int index)
CONSTANT_Integer_info
, _Float_info
,
_Long_info
, _Double_info
, or
_String_info
structure.
These are used with the LDC instruction.String
value or a wrapped primitive-type
value.public int getIntegerInfo(int index)
CONSTANT_Integer_info
structure
at the given index.public float getFloatInfo(int index)
CONSTANT_Float_info
structure
at the given index.public long getLongInfo(int index)
CONSTANT_Long_info
structure
at the given index.public double getDoubleInfo(int index)
CONSTANT_Double_info
structure
at the given index.public java.lang.String getStringInfo(int index)
CONSTANT_String_info
structure
at the given index.string_index
.public java.lang.String getUtf8Info(int index)
CONSTANT_utf8_info
structure
at the given index.public int getMethodHandleKind(int index)
reference_kind
field of the
CONSTANT_MethodHandle_info
structure
at the given index.REF_getField
,
REF_getStatic
,
REF_invokeInterface
,
REF_invokeSpecial
,
REF_invokeStatic
,
REF_invokeVirtual
,
REF_newInvokeSpecial
,
REF_putField
,
REF_putStatic
public int getMethodHandleIndex(int index)
reference_index
field of the
CONSTANT_MethodHandle_info
structure
at the given index.public int getMethodTypeInfo(int index)
descriptor_index
field of the
CONSTANT_MethodType_info
structure
at the given index.public int getInvokeDynamicBootstrap(int index)
bootstrap_method_attr_index
field of the
CONSTANT_InvokeDynamic_info
structure
at the given index.public int getInvokeDynamicNameAndType(int index)
name_and_type_index
field of the
CONSTANT_InvokeDynamic_info
structure
at the given index.public java.lang.String getInvokeDynamicType(int index)
descriptor_index
field of the
CONSTANT_NameAndType_info
structure
indirectly specified by the given index.index
- an index to a CONSTANT_InvokeDynamic_info
.public int isConstructor(java.lang.String classname, int index)
CONSTANT_Methodref_info
structure at the given index represents the constructor
of the given class.descriptor_index
specifying
the type descriptor of the that constructor.
If it is not that constructor,
isConstructor()
returns 0.public int isMember(java.lang.String classname, java.lang.String membername, int index)
CONSTANT_Methodref_info
,
CONSTANT_Fieldref_info
, or
CONSTANT_InterfaceMethodref_info
structure
at the given index represents the member with the specified
name and declaring class.classname
- the class declaring the membermembername
- the member nameindex
- the index into the constant pool tabledescriptor_index
specifying
the type descriptor of that member.
If it is not that member,
isMember()
returns 0.public java.lang.String eqMember(java.lang.String membername, java.lang.String desc, int index)
CONSTANT_Methodref_info
,
CONSTANT_Fieldref_info
, or
CONSTANT_InterfaceMethodref_info
structure
at the given index has the name and the descriptor
given as the arguments.membername
- the member namedesc
- the descriptor of the member.index
- the index into the constant pool table..._info
structure
at index
.
Otherwise, null if that structure does not
match the given member name and descriptor.private int addItem0(ConstInfo info)
private int addItem(ConstInfo info)
public int copy(int n, ConstPool dest, java.util.Map classnames)
n
- the n-th itemdest
- destination constant pool tableclassnames
- the map or null.int addConstInfoPadding()
public int addClassInfo(CtClass c)
CONSTANT_Class_info
structure.
This also adds a CONSTANT_Utf8_info
structure
for storing the class name.
public int addClassInfo(java.lang.String qname)
CONSTANT_Class_info
structure.
This also adds a CONSTANT_Utf8_info
structure
for storing the class name.
qname
- a fully-qualified class name
(or the JVM-internal representation of that name).public int addNameAndTypeInfo(java.lang.String name, java.lang.String type)
CONSTANT_NameAndType_info
structure.
This also adds CONSTANT_Utf8_info
structures.
name
- name_index
type
- descriptor_index
public int addNameAndTypeInfo(int name, int type)
CONSTANT_NameAndType_info
structure.name
- name_index
type
- descriptor_index
public int addFieldrefInfo(int classInfo, java.lang.String name, java.lang.String type)
CONSTANT_Fieldref_info
structure.
This also adds a new CONSTANT_NameAndType_info
structure.
classInfo
- class_index
name
- name_index
of CONSTANT_NameAndType_info
.type
- descriptor_index
of CONSTANT_NameAndType_info
.public int addFieldrefInfo(int classInfo, int nameAndTypeInfo)
CONSTANT_Fieldref_info
structure.classInfo
- class_index
nameAndTypeInfo
- name_and_type_index
.public int addMethodrefInfo(int classInfo, java.lang.String name, java.lang.String type)
CONSTANT_Methodref_info
structure.
This also adds a new CONSTANT_NameAndType_info
structure.
classInfo
- class_index
name
- name_index
of CONSTANT_NameAndType_info
.type
- descriptor_index
of CONSTANT_NameAndType_info
.public int addMethodrefInfo(int classInfo, int nameAndTypeInfo)
CONSTANT_Methodref_info
structure.classInfo
- class_index
nameAndTypeInfo
- name_and_type_index
.public int addInterfaceMethodrefInfo(int classInfo, java.lang.String name, java.lang.String type)
CONSTANT_InterfaceMethodref_info
structure.
This also adds a new CONSTANT_NameAndType_info
structure.
classInfo
- class_index
name
- name_index
of CONSTANT_NameAndType_info
.type
- descriptor_index
of CONSTANT_NameAndType_info
.public int addInterfaceMethodrefInfo(int classInfo, int nameAndTypeInfo)
CONSTANT_InterfaceMethodref_info
structure.classInfo
- class_index
nameAndTypeInfo
- name_and_type_index
.public int addStringInfo(java.lang.String str)
CONSTANT_String_info
structure.
This also adds a new CONSTANT_Utf8_info
structure.
public int addIntegerInfo(int i)
CONSTANT_Integer_info
structure.public int addFloatInfo(float f)
CONSTANT_Float_info
structure.public int addLongInfo(long l)
CONSTANT_Long_info
structure.public int addDoubleInfo(double d)
CONSTANT_Double_info
structure.public int addUtf8Info(java.lang.String utf8)
CONSTANT_Utf8_info
structure.public int addMethodHandleInfo(int kind, int index)
CONSTANT_MethodHandle_info
structure.kind
- reference_kind
such as REF_invokeStatic
.index
- reference_index
.public int addMethodTypeInfo(int desc)
CONSTANT_MethodType_info
structure.desc
- descriptor_index
.public int addInvokeDynamicInfo(int bootstrap, int nameAndType)
CONSTANT_InvokeDynamic_info
structure.bootstrap
- bootstrap_method_attr_index
.nameAndType
- name_and_type_index
.public java.util.Set getClassNames()
String
objects).public void renameClass(java.lang.String oldName, java.lang.String newName)
oldName
- the replaced name (JVM-internal representation).newName
- the substituted name (JVM-internal representation).public void renameClass(java.util.Map classnames)
classnames
- specifies pairs of replaced and substituted
name.private void read(java.io.DataInputStream in) throws java.io.IOException
java.io.IOException
private static java.util.HashMap makeItemsCache(LongVector items)
private int readOne(java.io.DataInputStream in) throws java.io.IOException
java.io.IOException
public void write(java.io.DataOutputStream out) throws java.io.IOException
java.io.IOException
public void print()
public void print(java.io.PrintWriter out)