-} java_objectarray;
-
-typedef struct java_arrayarray {
- java_arrayheader header;
- constant_arraydescriptor *elementdescriptor;
- java_arrayheader *data[1];
-} java_arrayarray;
-
-
-/* structure for primitive classes ********************************************/
-
-typedef struct primitivetypeinfo {
- classinfo *class_wrap; /* class for wrapping primitive type */
- classinfo *class_primitive; /* primitive class */
- char *wrapname; /* name of class for wrapping */
- char typesig; /* one character type signature */
- char *name; /* name of primitive class */
-} primitivetypeinfo;
-
-/* field, method and class structures *****************************************/
-
-/* fieldinfo ******************************************************************/
-
-struct fieldinfo { /* field of a class */
- s4 flags; /* ACC flags */
- s4 type; /* basic data type */
- utf *name; /* name of field */
- utf *descriptor; /* JavaVM descriptor string of field */
-
- s4 offset; /* offset from start of object (instance variables) */
-
- union { /* storage for static values (class variables) */
- s4 i;
- s8 l;
- float f;
- double d;
- void *a;
- } value;
-
- /*--- XTA ---*/
- s4 fieldUsed; /* initialized to NOTUSED; set to USED when type checked */
- bool fieldChecked;
- classinfo *fldClassType;
- classSet *XTAclassSet; /* field class type set */
- s4 lastRoundChgd;
- /*--- VTA ---*/
- s4 VTAfieldUsed; /* -1=marked (might be used) 0=not used 1=used */
- classSetNode *VTAclassSet; /* field class type set */
-
-} ;
-
-struct basicblock;
-
-/* exceptiontable *************************************************************/
-
-typedef struct xtable { /* exceptiontable entry in a method */
- s4 startpc; /* start pc of guarded area (inclusive) */
- struct basicblock *start;
-
- s4 endpc; /* end pc of guarded area (exklusive) */
- struct basicblock *end;
-
- s4 handlerpc; /* pc of exception handler */
- struct basicblock *handler;
-
- classinfo *catchtype; /* catchtype of exception (NULL == catchall) */
- struct xtable *next; /* used to build a list of exception when */
- /* loops are copied */
- struct xtable *down; /* instead of the old array, a list is used */
-} xtable;
-
-
-typedef struct exceptiontable { /* exceptiontable entry in a method */
- s4 startpc; /* start pc of guarded area (inclusive) */
- s4 endpc; /* end pc of guarded area (exklusive) */
- s4 handlerpc; /* pc of exception handler */
- classinfo *catchtype; /* catchtype of exception (NULL == catchall) */
-} exceptiontable;
-
-
-/* methodinfo static info ****************************************************/
-/*typedef struct rtainfo {
-
-} rtainfo; */
-/* methodinfo *****************************************************************/
-
-struct methodinfo { /* method structure */
- s4 flags; /* ACC flags */
- utf *name; /* name of method */
- utf *descriptor; /* JavaVM descriptor string of method */
- s4 returntype; /* only temporary valid, return type */
- classinfo *returnclass; /* pointer to classinfo for the rtn type */ /*XTA*/
- s4 paramcount; /* only temporary valid, parameter count */
- u1 *paramtypes; /* only temporary valid, parameter types */
- classinfo **paramclass; /* pointer to classinfo for a parameter */ /*XTA*/
-
- classinfo *class; /* class, the method belongs to */
- s4 vftblindex; /* index of method in virtual function table
- (if it is a virtual method) */
- s4 maxstack; /* maximum stack depth of method */
- s4 maxlocals; /* maximum number of local variables */
- s4 jcodelength; /* length of JavaVM code */
- u1 *jcode; /* pointer to JavaVM code */
-
- s4 exceptiontablelength;/* exceptiontable length */
- exceptiontable *exceptiontable;
- /* the exceptiontable */
-
- u1 *stubroutine; /* stub for compiling or calling natives */
- s4 mcodelength; /* legth of generated machine code */
- u1 *mcode; /* pointer to machine code */
- u1 *entrypoint; /* entry point in machine code */
-
- /*rtainfo rta;*/
- /*xtainfo xta;*/
-
- s4 methodUsed; /* marked (might be used later) /not used /used */
- s4 monoPoly; /* call is mono or poly or unknown */ /*RT stats */
- /* should # method def'd and used be kept after static parse (will it be used?) */
- s4 subRedefs;
- s4 subRedefsUsed;
-
- /* --- XTA --- */
- s4 XTAmethodUsed; /* XTA if used in callgraph - not used /used */
- classSet *XTAclassSet; /* method class type set */
- classSet *PartClassSet; /* method class type set */
-
- classSetNode *paramClassSet; /* cone set of methods parameters */
-
- methSet *calls; /* methods this method calls */
- methSet *calledBy; /* methods that call this method */
- methSet *marked; /* methods that marked by this method */
- methSet *markedBy;
- fldSet *fldsUsed; /* fields used by this method */
- bool chgdSinceLastParse; /* Changed since last parse ? */
-
- s4 lastRoundParsed; /* Last round parsed */
- methSetNode *interfaceCalls; /* methods this method calls as interface */
-
- /* --- VTA --- */
- classSetNode *VTAclassSet; /* method class type set */
- methSetNode *VTAcalls; /* methods this method calls */
- classSetNode **VTAlocalSets; /*VTA*/
- classSetNode **VTAstackType; /*VTA*/