Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Clazz
Class jq_Class  view jq_Class download jq_Class.java

java.lang.Object
  extended byClazz.jq_Type
      extended byClazz.jq_Reference
          extended byClazz.jq_Class
All Implemented Interfaces:
Compil3r.Quad.AndersenInterface.AndersenClass, Compil3r.Quad.AndersenInterface.AndersenReference, Compil3r.Quad.AndersenInterface.AndersenType, jq_ClassFileConstants

public final class jq_Class
extends jq_Reference
implements jq_ClassFileConstants, Compil3r.Quad.AndersenInterface.AndersenClass

jq_Class

Version:
$Id: jq_Class.java,v 1.66 2003/08/03 12:26:00 joewhaley Exp $

Nested Class Summary
(package private) static interface jq_Class.Delegate
           
 
Nested classes inherited from class Clazz.jq_Reference
jq_Reference.jq_NullType
 
Field Summary
static jq_Class _class
           
private static jq_Class.Delegate _delegate
           
private  char access_flags
           
private  java.util.Map attributes
           
static java.util.List classToReplace
           
private  jq_ConstantPool const_pool
           
private  jq_InstanceField[] declared_instance_fields
           
private  jq_InstanceMethod[] declared_instance_methods
           
private  jq_Class[] declared_interfaces
           
static boolean DETERMINISTIC
           
private  boolean dont_align
           
private  jq_InstanceField[] instance_fields
           
private  int instance_size
           
private  jq_Class[] interfaces
           
private  char major_version
           
private  java.util.Map members
           
private  char minor_version
           
static int NumOfIFieldsEliminated
           
static int NumOfIFieldsKept
           
static int NumOfIMethodsEliminated
           
static int NumOfIMethodsKept
           
static int NumOfSFieldsEliminated
           
static int NumOfSFieldsKept
           
static int NumOfSMethodsEliminated
           
static int NumOfSMethodsKept
           
private  int[] reference_offsets
           
static boolean REPLACE_CLASS
           
private  int[] static_data
           
private  int static_data_size
           
private  jq_StaticField[] static_fields
           
private  jq_StaticMethod[] static_methods
           
private  jq_Class[] subclasses
           
private  jq_Class[] subinterfaces
           
private  jq_Class super_class
           
static boolean TRACE
           
static boolean TRACE_REPLACE_CLASS
           
private  jq_InstanceMethod[] virtual_methods
           
static boolean WARN_STALE_CLASS_FILES
           
 
Fields inherited from class Clazz.jq_Reference
_state, _vtable, class_loader, state, vtable
 
Fields inherited from class Clazz.jq_Type
desc, display, DISPLAY_SIZE, offset, s_s_array, s_s_array_length, USE_CLASS_OBJECT_FIELD
 
Fields inherited from interface Clazz.jq_ClassFileConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_Class, CONSTANT_Double, CONSTANT_FieldRef, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodRef, CONSTANT_Long, CONSTANT_MethodRef, CONSTANT_NameAndType, CONSTANT_ResolvedClass, CONSTANT_ResolvedIFieldRef, CONSTANT_ResolvedIMethodRef, CONSTANT_ResolvedSFieldRef, CONSTANT_ResolvedSMethodRef, CONSTANT_String, CONSTANT_Utf8, CONSUME_STACK, ILLEGAL_OPCODE, ILLEGAL_TYPE, jbc_AALOAD, jbc_AASTORE, jbc_ACONST_NULL, jbc_ALOAD, jbc_ALOAD_0, jbc_ALOAD_1, jbc_ALOAD_2, jbc_ALOAD_3, jbc_ANEWARRAY, jbc_ARETURN, jbc_ARRAYLENGTH, jbc_ASTORE, jbc_ASTORE_0, jbc_ASTORE_1, jbc_ASTORE_2, jbc_ASTORE_3, jbc_ATHROW, jbc_BALOAD, jbc_BASTORE, jbc_BIPUSH, jbc_BREAKPOINT, jbc_CALOAD, jbc_CASTORE, jbc_CHECKCAST, jbc_D2F, jbc_D2I, jbc_D2L, jbc_DADD, jbc_DALOAD, jbc_DASTORE, jbc_DCMPG, jbc_DCMPL, jbc_DCONST_0, jbc_DCONST_1, jbc_DDIV, jbc_DLOAD, jbc_DLOAD_0, jbc_DLOAD_1, jbc_DLOAD_2, jbc_DLOAD_3, jbc_DMUL, jbc_DNEG, jbc_DREM, jbc_DRETURN, jbc_DSTORE, jbc_DSTORE_0, jbc_DSTORE_1, jbc_DSTORE_2, jbc_DSTORE_3, jbc_DSUB, jbc_DUP, jbc_DUP_X1, jbc_DUP_X2, jbc_DUP2, jbc_DUP2_X1, jbc_DUP2_X2, jbc_F2D, jbc_F2I, jbc_F2L, jbc_FADD, jbc_FALOAD, jbc_FASTORE, jbc_FCMPG, jbc_FCMPL, jbc_FCONST_0, jbc_FCONST_1, jbc_FCONST_2, jbc_FDIV, jbc_FLOAD, jbc_FLOAD_0, jbc_FLOAD_1, jbc_FLOAD_2, jbc_FLOAD_3, jbc_FMUL, jbc_FNEG, jbc_FREM, jbc_FRETURN, jbc_FSTORE, jbc_FSTORE_0, jbc_FSTORE_1, jbc_FSTORE_2, jbc_FSTORE_3, jbc_FSUB, jbc_GETFIELD, jbc_GETSTATIC, jbc_GOTO, jbc_GOTO_W, jbc_I2B, jbc_I2C, jbc_I2D, jbc_I2F, jbc_I2L, jbc_I2S, jbc_IADD, jbc_IALOAD, jbc_IAND, jbc_IASTORE, jbc_ICONST_0, jbc_ICONST_1, jbc_ICONST_2, jbc_ICONST_3, jbc_ICONST_4, jbc_ICONST_5, jbc_ICONST_M1, jbc_IDIV, jbc_IF_ACMPEQ, jbc_IF_ACMPNE, jbc_IF_ICMPEQ, jbc_IF_ICMPGE, jbc_IF_ICMPGT, jbc_IF_ICMPLE, jbc_IF_ICMPLT, jbc_IF_ICMPNE, jbc_IFEQ, jbc_IFGE, jbc_IFGT, jbc_IFLE, jbc_IFLT, jbc_IFNE, jbc_IFNONNULL, jbc_IFNULL, jbc_IINC, jbc_ILOAD, jbc_ILOAD_0, jbc_ILOAD_1, jbc_ILOAD_2, jbc_ILOAD_3, jbc_IMUL, jbc_INEG, jbc_INSTANCEOF, jbc_INT2BYTE, jbc_INT2CHAR, jbc_INT2SHORT, jbc_INVOKEINTERFACE, jbc_INVOKENONVIRTUAL, jbc_INVOKESPECIAL, jbc_INVOKESTATIC, jbc_INVOKEVIRTUAL, jbc_IOR, jbc_IREM, jbc_IRETURN, jbc_ISHL, jbc_ISHR, jbc_ISTORE, jbc_ISTORE_0, jbc_ISTORE_1, jbc_ISTORE_2, jbc_ISTORE_3, jbc_ISUB, jbc_IUSHR, jbc_IXOR, jbc_JSR, jbc_JSR_W, jbc_L2D, jbc_L2F, jbc_L2I, jbc_LADD, jbc_LALOAD, jbc_LAND, jbc_LASTORE, jbc_LCMP, jbc_LCONST_0, jbc_LCONST_1, jbc_LDC, jbc_LDC_W, jbc_LDC2_W, jbc_LDIV, jbc_LLOAD, jbc_LLOAD_0, jbc_LLOAD_1, jbc_LLOAD_2, jbc_LLOAD_3, jbc_LMUL, jbc_LNEG, jbc_LOOKUPSWITCH, jbc_LOR, jbc_LREM, jbc_LRETURN, jbc_LSHL, jbc_LSHR, jbc_LSTORE, jbc_LSTORE_0, jbc_LSTORE_1, jbc_LSTORE_2, jbc_LSTORE_3, jbc_LSUB, jbc_LUSHR, jbc_LXOR, jbc_MONITORENTER, jbc_MONITOREXIT, jbc_MULTIANEWARRAY, jbc_NEW, jbc_NEWARRAY, jbc_NOP, jbc_POP, jbc_POP2, jbc_PUTFIELD, jbc_PUTSTATIC, jbc_RET, jbc_RETURN, jbc_SALOAD, jbc_SASTORE, jbc_SIPUSH, jbc_SWAP, jbc_TABLESWITCH, jbc_WIDE, NO_OF_OPERANDS, OPCODE_NAMES, PRODUCE_STACK, RESERVED, STATE_CLSINITERROR, STATE_CLSINITIALIZED, STATE_CLSINITIALIZING, STATE_CLSINITRUNNING, STATE_COMPILED, STATE_COMPILING, STATE_LOADED, STATE_LOADERROR, STATE_LOADING1, STATE_LOADING2, STATE_LOADING3, STATE_PREPARED, STATE_PREPARING, STATE_SFINITIALIZED, STATE_SFINITIALIZING, STATE_UNLOADED, STATE_VERIFIED, STATE_VERIFYING, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_CLASSEND, TC_DOUBLE, TC_FLOAT, TC_INT, TC_LONG, TC_PARAM, TC_PARAMEND, TC_SHORT, TC_VOID, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE
 
Constructor Summary
private jq_Class(java.lang.ClassLoader class_loader, UTF.Utf8 desc)
          Private constructor.
 
Method Summary
 void accept(jq_TypeVisitor tv)
           
private  void addDeclaredMember(jq_NameAndDesc nd, jq_Member m)
           
private  void addSubclass(jq_Class subclass)
           
private  void addSubinterface(jq_Class subinterface)
           
 Compil3r.Quad.AndersenInterface.AndersenClassInitializer and_getClassInitializer()
           
private static jq_Class.Delegate attemptDelegate(java.lang.String s)
           
static java.lang.String className(UTF.Utf8 desc)
           
 void cls_initialize()
           
 void compile()
           
(package private)  jq_InstanceField createInstanceField(jq_NameAndDesc nd)
           
(package private)  jq_InstanceMethod createInstanceMethod(jq_NameAndDesc nd)
           
(package private)  jq_StaticField createStaticField(jq_NameAndDesc nd)
           
(package private)  jq_StaticMethod createStaticMethod(jq_NameAndDesc nd)
           
 boolean doesConstantPoolContain(java.lang.Object o)
           
 void dump(java.io.DataOutput out)
           
private static jq_Member findByNameAndDesc(jq_Member[] array, jq_NameAndDesc nd)
           
 jq_InstanceMethod generateInstanceMethodStub(jq_NameAndDesc nd, jq_StaticMethod m, char access_flags, char method_idx)
           
 jq_StaticMethod generateStaticMethodStub(jq_NameAndDesc nd, jq_StaticMethod m, char access_flags, char classfield_idx, char method_idx)
           
 char getAccessFlags()
           
 byte[] getAttribute(java.lang.String name)
           
 byte[] getAttribute(UTF.Utf8 name)
           
 java.util.Iterator getAttributes()
           
 jq_ClassInitializer getClassInitializer()
           
 jq_ConstantPool getCP()
           
 java.lang.Object getCP(char index)
           
 java.lang.Double getCPasDouble(char index)
           
 java.lang.Float getCPasFloat(char index)
           
 jq_InstanceField getCPasInstanceField(char index)
           
 jq_InstanceMethod getCPasInstanceMethod(char index)
           
 java.lang.Integer getCPasInt(char index)
           
 java.lang.Long getCPasLong(char index)
           
 jq_Member getCPasMember(char index)
           
 jq_StaticField getCPasStaticField(char index)
           
 jq_StaticMethod getCPasStaticMethod(char index)
           
 java.lang.String getCPasString(char index)
           
 jq_Type getCPasType(char index)
           
 UTF.Utf8 getCPasUtf8(char index)
           
 int getCPCount()
           
 byte getCPtag(char index)
           
 jq_InstanceField getDeclaredInstanceField(jq_NameAndDesc nd)
           
 jq_InstanceField[] getDeclaredInstanceFields()
           
 jq_InstanceMethod getDeclaredInstanceMethod(jq_NameAndDesc nd)
           
 jq_InstanceMethod[] getDeclaredInstanceMethods()
           
 jq_Class getDeclaredInterface(UTF.Utf8 desc)
           
 jq_Class[] getDeclaredInterfaces()
           
 jq_Member getDeclaredMember(jq_NameAndDesc nd)
           
 jq_Member getDeclaredMember(java.lang.String name, java.lang.String desc)
           
 jq_StaticField getDeclaredStaticField(jq_NameAndDesc nd)
           
 jq_StaticField[] getDeclaredStaticFields()
           
 jq_StaticMethod getDeclaredStaticMethod(jq_NameAndDesc nd)
           
 jq_StaticMethod[] getDeclaredStaticMethods()
           
 int getDepth()
           
 jq_Reference getDirectPrimarySupertype()
           
 jq_Initializer getInitializer(jq_NameAndDesc nd)
           
 jq_Initializer getInitializer(UTF.Utf8 desc)
           
 jq_Class[] getInnerClasses()
           
 jq_InstanceField getInstanceField(jq_NameAndDesc nd)
           
 jq_InstanceField[] getInstanceFields()
           
 jq_InstanceMethod getInstanceMethod(jq_NameAndDesc nd)
           
 int getInstanceSize()
           
 jq_Class getInterface(UTF.Utf8 desc)
           
 jq_Class[] getInterfaces()
           
static jq_InstanceMethod getInvokespecialTarget(jq_Class clazz, jq_InstanceMethod method)
           
 java.lang.String getJDKDesc()
           
 java.lang.String getJDKName()
           
 int getMajorVersion()
           
 java.util.Collection getMembers()
           
 int getMinorVersion()
           
 java.lang.String getName()
           
 int getNumberOfStaticFields()
           
 int getNumberOfStaticMethods()
           
 jq_InstanceField getOrCreateInstanceField(jq_NameAndDesc nd)
           
 jq_InstanceField getOrCreateInstanceField(java.lang.String name, java.lang.String desc)
           
 jq_InstanceMethod getOrCreateInstanceMethod(jq_NameAndDesc nd)
           
 jq_InstanceMethod getOrCreateInstanceMethod(java.lang.String name, java.lang.String desc)
           
 jq_StaticField getOrCreateStaticField(jq_NameAndDesc nd)
           
 jq_StaticField getOrCreateStaticField(java.lang.String name, java.lang.String desc)
           
 jq_StaticMethod getOrCreateStaticMethod(jq_NameAndDesc nd)
           
 jq_StaticMethod getOrCreateStaticMethod(java.lang.String name, java.lang.String desc)
           
 int[] getReferenceOffsets()
           
 UTF.Utf8 getSourceFile()
           
 int[] getStaticData()
           
 jq_StaticField getStaticField(jq_NameAndDesc nd)
           
private  int getStaticFields_helper(jq_StaticField[] sfs, int current)
           
 jq_StaticField[] getStaticFields()
           
 jq_StaticMethod getStaticMethod(jq_NameAndDesc nd)
           
private  int getStaticMethods_helper(jq_StaticMethod[] sfs, int current)
           
 jq_StaticMethod[] getStaticMethods()
           
 jq_Class[] getSubClasses()
           
 jq_Class[] getSubInterfaces()
           
 jq_Class getSuperclass()
           
 jq_InstanceMethod getVirtualMethod(jq_NameAndDesc nd)
           
 jq_InstanceMethod[] getVirtualMethods()
           
 int hashCode()
          Get a value that represents this Object, as uniquely as possible within the confines of an int.
 boolean implementsInterface(jq_Class k)
           
private  void invokeclinit()
           
 boolean isAbstract()
           
 boolean isAddressType()
           
 boolean isArrayType()
           
 boolean isClassType()
          INTERFACE
 boolean isDeprecated()
           
 boolean isFinal()
           
 boolean isInClassLib()
           
 boolean isInSamePackage(jq_Class that)
           
 boolean isInterface()
           
 boolean isPublic()
           
 boolean isSpecial()
           
 boolean isSynthetic()
           
 void load()
          Loads the binary data for this class.
 void load(java.io.DataInput in)
           
 void merge_old(jq_Class that)
           
 void merge(jq_Class that)
           
 boolean needsDynamicLink(jq_Method method)
           
static jq_Class newClass(java.lang.ClassLoader classLoader, UTF.Utf8 desc)
           
 java.lang.Object newInstance()
           
 void prepare()
           
(package private)  void readAttributes(java.io.DataInput in, java.util.Map attribMap)
           
 jq_ConstantPool.ConstantPoolRebuilder rebuildConstantPool(boolean addCode)
           
 void remakeAttributes(jq_ConstantPool.ConstantPoolRebuilder cpr)
           
 void removeAttribute(java.lang.String s)
           
 void removeAttribute(UTF.Utf8 u)
           
private  void removeSubclass(jq_Class subclass)
           
private  void removeSubinterface(jq_Class subinterface)
           
private  void replaceMethodIn(jq_Class old)
           
private  void rewriteMethod(jq_ConstantPool.ConstantPoolRebuilder cp, Compil3r.BytecodeAnalysis.Bytecodes.InstructionList il)
           
private  void rewriteMethodForReplace(jq_ConstantPool.ConstantPoolRebuilder cp, Compil3r.BytecodeAnalysis.Bytecodes.InstructionList il)
           
 void setCP(jq_ConstantPool cp)
           
 void setDeclaredInstanceFields(jq_InstanceField[] dif)
           
 void setDeclaredInstanceMethods(jq_InstanceMethod[] dim)
           
 void setDeclaredStaticFields(jq_StaticField[] dsf)
           
 void setDeclaredStaticMethods(jq_StaticMethod[] dsm)
           
 void setStaticData(jq_StaticField sf, Memory.Address data)
           
 void setStaticData(jq_StaticField sf, double data)
           
 void setStaticData(jq_StaticField sf, float data)
           
 void setStaticData(jq_StaticField sf, int data)
           
 void setStaticData(jq_StaticField sf, long data)
           
 void setStaticData(jq_StaticField sf, java.lang.Object data)
           
 void sf_initialize()
           
 java.lang.String shortName()
           
 void verify()
           
 
Methods inherited from class Clazz.jq_Reference
chkState, getClassLoader, getReferenceSize, getState, getTypeOf, getVTable, isClsInitialized, isClsInitRunning, isCompiled, isInstance, isIntLike, isLoaded, isPrepared, isPrimitiveType, isSFInitialized, isVerified
 
Methods inherited from class Clazz.jq_Type
convertPrimitive, getArrayTypeForElementType, getDesc, getJavaLangClassObject, isBootType, isReferenceType, isSubtypeOf, parseType, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TRACE

public static boolean TRACE

WARN_STALE_CLASS_FILES

public static boolean WARN_STALE_CLASS_FILES

REPLACE_CLASS

public static boolean REPLACE_CLASS

TRACE_REPLACE_CLASS

public static boolean TRACE_REPLACE_CLASS

classToReplace

public static java.util.List classToReplace

DETERMINISTIC

public static final boolean DETERMINISTIC
See Also:
Constant Field Values

members

private java.util.Map members

minor_version

private char minor_version

major_version

private char major_version

access_flags

private char access_flags

super_class

private jq_Class super_class

subclasses

private jq_Class[] subclasses

subinterfaces

private jq_Class[] subinterfaces

declared_interfaces

private jq_Class[] declared_interfaces

interfaces

private jq_Class[] interfaces

static_fields

private jq_StaticField[] static_fields

static_methods

private jq_StaticMethod[] static_methods

declared_instance_fields

private jq_InstanceField[] declared_instance_fields

declared_instance_methods

private jq_InstanceMethod[] declared_instance_methods

attributes

private java.util.Map attributes

const_pool

private jq_ConstantPool const_pool

static_data_size

private int static_data_size

instance_size

private int instance_size

instance_fields

private jq_InstanceField[] instance_fields

reference_offsets

private int[] reference_offsets

virtual_methods

private jq_InstanceMethod[] virtual_methods

static_data

private int[] static_data

dont_align

private boolean dont_align

NumOfIFieldsKept

public static int NumOfIFieldsKept

NumOfSFieldsKept

public static int NumOfSFieldsKept

NumOfIMethodsKept

public static int NumOfIMethodsKept

NumOfSMethodsKept

public static int NumOfSMethodsKept

NumOfIFieldsEliminated

public static int NumOfIFieldsEliminated

NumOfSFieldsEliminated

public static int NumOfSFieldsEliminated

NumOfIMethodsEliminated

public static int NumOfIMethodsEliminated

NumOfSMethodsEliminated

public static int NumOfSMethodsEliminated

_class

public static final jq_Class _class

_delegate

private static jq_Class.Delegate _delegate
Constructor Detail

jq_Class

private jq_Class(java.lang.ClassLoader class_loader,
                 UTF.Utf8 desc)
Private constructor. Use a ClassLoader to create a jq_Class instance.

Method Detail

isClassType

public final boolean isClassType()
INTERFACE

Specified by:
isClassType in class jq_Type

isArrayType

public final boolean isArrayType()
Specified by:
isArrayType in interface Compil3r.Quad.AndersenInterface.AndersenType
Specified by:
isArrayType in class jq_Type

isAddressType

public final boolean isAddressType()
Specified by:
isAddressType in class jq_Type

getName

public final java.lang.String getName()
Specified by:
getName in class jq_Type

shortName

public final java.lang.String shortName()
Specified by:
shortName in class jq_Type

isInSamePackage

public final boolean isInSamePackage(jq_Class that)

getJDKName

public final java.lang.String getJDKName()
Specified by:
getJDKName in class jq_Reference

getJDKDesc

public final java.lang.String getJDKDesc()
Specified by:
getJDKDesc in class jq_Type

needsDynamicLink

public final boolean needsDynamicLink(jq_Method method)
Overrides:
needsDynamicLink in class jq_Type

getDeclaredMember

public jq_Member getDeclaredMember(jq_NameAndDesc nd)

getDeclaredMember

public jq_Member getDeclaredMember(java.lang.String name,
                                   java.lang.String desc)

getMembers

public java.util.Collection getMembers()

addDeclaredMember

private void addDeclaredMember(jq_NameAndDesc nd,
                               jq_Member m)

accept

public void accept(jq_TypeVisitor tv)
Overrides:
accept in class jq_Type

hashCode

public int hashCode()
Description copied from class: java.lang.Object
Get a value that represents this Object, as uniquely as possible within the confines of an int.

There are some requirements on this method which subclasses must follow:

  • Semantic equality implies identical hashcodes. In other words, if a.equals(b) is true, then a.hashCode() == b.hashCode() must be as well. However, the reverse is not necessarily true, and two objects may have the same hashcode without being equal.
  • It must be consistent. Whichever value o.hashCode() returns on the first invocation must be the value returned on all later invocations as long as the object exists. Notice, however, that the result of hashCode may change between separate executions of a Virtual Machine, because it is not invoked on the same object.

Notice that since hashCode is used in java.util.Hashtable and other hashing classes, a poor implementation will degrade the performance of hashing (so don't blindly implement it as returning a constant!). Also, if calculating the hash is time-consuming, a class may consider caching the results.

The default implementation returns System.identityHashCode(this)


getMinorVersion

public final int getMinorVersion()

getMajorVersion

public final int getMajorVersion()

getAccessFlags

public final char getAccessFlags()

isPublic

public final boolean isPublic()

isFinal

public final boolean isFinal()
Specified by:
isFinal in class jq_Type

isSpecial

public final boolean isSpecial()

isInterface

public final boolean isInterface()

isAbstract

public final boolean isAbstract()

getSuperclass

public final jq_Class getSuperclass()

getDepth

public final int getDepth()
Specified by:
getDepth in class