org.apache.jdo.impl.enhancer.classfile
Class ConstantPool

java.lang.Object
  extended byorg.apache.jdo.impl.enhancer.classfile.ConstantPool
All Implemented Interfaces:
VMConstants

public class ConstantPool
extends java.lang.Object
implements VMConstants

Constant Pool implementation - this represents the constant pool of a class in a class file.


Field Summary
private  java.util.Hashtable classTable
           
private  java.util.Hashtable doubleTable
           
private  java.util.Vector fieldRefTable
           
private  java.util.Hashtable floatTable
           
private  boolean hashed
           
private  java.util.Vector ifaceMethodRefTable
           
private  java.util.Hashtable intTable
           
private  java.util.Hashtable longTable
           
private  java.util.Vector methodRefTable
           
private  java.util.Vector nameAndTypeTable
           
private  java.util.Vector pool
           
private  java.util.Hashtable stringTable
           
private  java.util.Hashtable unicodeTable
           
private  java.util.Hashtable utfTable
           
 
Fields inherited from interface org.apache.jdo.impl.enhancer.classfile.VMConstants
ACCAbstract, ACCAnnotation, ACCBridge, ACCEnum, ACCFinal, ACCInterface, ACCNative, ACCPrivate, ACCProtected, ACCPublic, ACCStatic, ACCStrict, ACCSuper, ACCSynchronized, ACCSynthetic, ACCTransient, ACCVarargs, ACCVolatile, CONSTANTClass, CONSTANTDouble, CONSTANTFieldRef, CONSTANTFloat, CONSTANTInteger, CONSTANTInterfaceMethodRef, CONSTANTLong, CONSTANTMethodRef, CONSTANTNameAndType, CONSTANTString, CONSTANTUnicode, CONSTANTUtf8, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokedynamic, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, T_TWOWORD, T_UNKNOWN, T_WORD, TC_INTERFACE, TC_OBJECT, TC_STRING
 
Constructor Summary
(package private) ConstantPool()
           
(package private) ConstantPool(java.io.DataInputStream input)
           
 
Method Summary
 ConstClass addClass(java.lang.String className)
          Find or create a class constant in the pool
 ConstDouble addDouble(double d)
          Find or create a double constant in the pool
 ConstFieldRef addFieldRef(java.lang.String className, java.lang.String fieldName, java.lang.String type)
          Find or create a field constant in the pool
 ConstFloat addFloat(float f)
          Find or create a float constant in the pool
 ConstInteger addInteger(int i)
          Find or create an integer constant in the pool
 ConstInterfaceMethodRef addInterfaceMethodRef(java.lang.String className, java.lang.String methodName, java.lang.String type)
          Find or create an interface method constant in the pool
 ConstLong addLong(long l)
          Find or create a long constant in the pool
 ConstMethodRef addMethodRef(java.lang.String className, java.lang.String methodName, java.lang.String type)
          Find or create a method constant in the pool
 ConstNameAndType addNameAndType(java.lang.String name, java.lang.String type)
          Find or create a name/type constant in the pool
 ConstString addString(java.lang.String s)
          Find or create a string constant in the pool
 ConstUnicode addUnicode(java.lang.String s)
          Find or create a unicode constant in the pool Obsolete?
 ConstUtf8 addUtf8(java.lang.String s)
          Find or create a utf8 constant in the pool
 ConstBasic constantAt(int index)
          Return the constant in the pool at the specified entry index
private  void hashConstants()
           
private  void internConstant(ConstBasic c)
           
 int nEntries()
          Return the number of pool entries.
(package private)  void print(java.io.PrintStream out, int indent)
           
private  int readConstant(java.io.DataInputStream input)
           
private  void recordConstant(ConstBasic c)
           
private  void resolvePool()
           
private  ConstBasicMemberRef searchTable(java.util.Vector table, java.lang.String cname, java.lang.String mname, java.lang.String sig)
           
(package private)  void summarize(java.io.PrintStream out, int indent)
           
(package private)  void write(java.io.DataOutputStream buff)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pool

private java.util.Vector pool

hashed

private boolean hashed

utfTable

private java.util.Hashtable utfTable

unicodeTable

private java.util.Hashtable unicodeTable

stringTable

private java.util.Hashtable stringTable

classTable

private java.util.Hashtable classTable

intTable

private java.util.Hashtable intTable

floatTable

private java.util.Hashtable floatTable

longTable

private java.util.Hashtable longTable

doubleTable

private java.util.Hashtable doubleTable

methodRefTable

private java.util.Vector methodRefTable

fieldRefTable

private java.util.Vector fieldRefTable

ifaceMethodRefTable

private java.util.Vector ifaceMethodRefTable

nameAndTypeTable

private java.util.Vector nameAndTypeTable
Constructor Detail

ConstantPool

ConstantPool()

ConstantPool

ConstantPool(java.io.DataInputStream input)
       throws java.io.IOException
Method Detail

nEntries

public int nEntries()
Return the number of pool entries.


constantAt

public ConstBasic constantAt(int index)
Return the constant in the pool at the specified entry index


addClass

public ConstClass addClass(java.lang.String className)
Find or create a class constant in the pool


addFieldRef

public ConstFieldRef addFieldRef(java.lang.String className,
                                 java.lang.String fieldName,
                                 java.lang.String type)
Find or create a field constant in the pool


addMethodRef

public ConstMethodRef addMethodRef(java.lang.String className,
                                   java.lang.String methodName,
                                   java.lang.String type)
Find or create a method constant in the pool


addInterfaceMethodRef

public ConstInterfaceMethodRef addInterfaceMethodRef(java.lang.String className,
                                                     java.lang.String methodName,
                                                     java.lang.String type)
Find or create an interface method constant in the pool


addString

public ConstString addString(java.lang.String s)
Find or create a string constant in the pool


addInteger

public ConstInteger addInteger(int i)
Find or create an integer constant in the pool


addFloat

public ConstFloat addFloat(float f)
Find or create a float constant in the pool


addLong

public ConstLong addLong(long l)
Find or create a long constant in the pool


addDouble

public ConstDouble addDouble(double d)
Find or create a double constant in the pool


addNameAndType

public ConstNameAndType addNameAndType(java.lang.String name,
                                       java.lang.String type)
Find or create a name/type constant in the pool


addUtf8

public ConstUtf8 addUtf8(java.lang.String s)
Find or create a utf8 constant in the pool


addUnicode

public ConstUnicode addUnicode(java.lang.String s)
Find or create a unicode constant in the pool Obsolete?


print

void print(java.io.PrintStream out,
           int indent)

summarize

void summarize(java.io.PrintStream out,
               int indent)

write

void write(java.io.DataOutputStream buff)
     throws java.io.IOException
Throws:
java.io.IOException

resolvePool

private void resolvePool()

hashConstants

private void hashConstants()

readConstant

private int readConstant(java.io.DataInputStream input)
                  throws java.io.IOException
Throws:
java.io.IOException

internConstant

private void internConstant(ConstBasic c)

recordConstant

private void recordConstant(ConstBasic c)

searchTable

private ConstBasicMemberRef searchTable(java.util.Vector table,
                                        java.lang.String cname,
                                        java.lang.String mname,
                                        java.lang.String sig)