PatchSet 3946 
Date: 2003/08/14 15:23:40
Author: rob
Branch: HEAD
Tag: (none) 
Log:
Cosmetic changes to verifier.

In preparation for verification of multiple inheritence.

Members: 
        ChangeLog:1.1548->1.1549 
        kaffe/kaffevm/verify.c:1.23->1.24 
        kaffe/kaffevm/verify.h:1.4->1.5 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.1548 kaffe/ChangeLog:1.1549
--- kaffe/ChangeLog:1.1548      Thu Aug 14 00:38:00 2003
+++ kaffe/ChangeLog     Thu Aug 14 07:23:40 2003
@@ -1,3 +1,17 @@
+2003-08-14  Rob Gonzalez <[EMAIL PROTECTED]>
+
+       * kaffe/kaffevm/verify.h
+       * kaffe/kaffevm/verify.c
+       (TINFO_SIGSTR) renamed TINFO_SIG
+       (TINFO_NAMESTR) renamed TINFO_NAME
+       (UNINIT) renamed TINFO_UNINIT
+       (UNINIT_SUPER) renamed TINFO_UNINIT_SUPER
+       
+       (TINFO_SUPERLIST) added.
+       
+       (type_info) renamed Type.
+       (Type.data) Hjava_langClass** supertypes added to union.
+
 2003-08-14  Guilhem Lavaux <[EMAIL PROTECTED]>
 
        * libraries/javalib/kjc.jar: New KJC with fixed protected field
Index: kaffe/kaffe/kaffevm/verify.c
diff -u kaffe/kaffe/kaffevm/verify.c:1.23 kaffe/kaffe/kaffevm/verify.c:1.24
--- kaffe/kaffe/kaffevm/verify.c:1.23   Wed Aug 13 13:50:26 2003
+++ kaffe/kaffe/kaffevm/verify.c        Thu Aug 14 07:23:41 2003
@@ -1057,39 +1057,39 @@
        TNULL->tinfo = TINFO_CLASS;
        TNULL->data.class = (Hjava_lang_Class*)TNULL;
        
-       TOBJ->tinfo = TINFO_SIGSTR;
+       TOBJ->tinfo = TINFO_SIG;
        TOBJ->data.sig = OBJECT_SIG;
        
-       TOBJARR->tinfo = TINFO_SIGSTR;  
+       TOBJARR->tinfo = TINFO_SIG;     
        TOBJARR->data.sig = OBJARR_SIG;
        
        
        TSTRING->data.sig = STRING_SIG;
-       TSTRING->tinfo = TINFO_SIGSTR;
+       TSTRING->tinfo = TINFO_SIG;
        
        
-       TCHARARR->tinfo = TINFO_SIGSTR;
+       TCHARARR->tinfo = TINFO_SIG;
        TCHARARR->data.sig = CHARARR_SIG;
        
-       TBYTEARR->tinfo = TINFO_SIGSTR;
+       TBYTEARR->tinfo = TINFO_SIG;
        TBYTEARR->data.sig = BYTEARR_SIG;
        
-       TBOOLARR->tinfo = TINFO_SIGSTR;
+       TBOOLARR->tinfo = TINFO_SIG;
        TBOOLARR->data.sig = BOOLARR_SIG;
        
-       TSHORTARR->tinfo = TINFO_SIGSTR;
+       TSHORTARR->tinfo = TINFO_SIG;
        TSHORTARR->data.sig = SHORTARR_SIG;
        
-       TINTARR->tinfo = TINFO_SIGSTR;
+       TINTARR->tinfo = TINFO_SIG;
        TINTARR->data.sig = INTARR_SIG;
        
-       TLONGARR->tinfo = TINFO_SIGSTR;
+       TLONGARR->tinfo = TINFO_SIG;
        TLONGARR->data.sig = LONGARR_SIG;
        
-       TFLOATARR->tinfo = TINFO_SIGSTR;
+       TFLOATARR->tinfo = TINFO_SIG;
        TFLOATARR->data.sig = FLOATARR_SIG;
        
-       TDOUBLEARR->tinfo = TINFO_SIGSTR;       
+       TDOUBLEARR->tinfo = TINFO_SIG;  
        TDOUBLEARR->data.sig = DOUBLEARR_SIG;
 }
 
@@ -2321,12 +2321,12 @@
        // or on the operand stack during a backwards branch
        if (toBlock->startAddr < fromBlock->startAddr) {
                for (n = 0; n < method->localsz; n++) {
-                       if (fromBlock->locals[n].tinfo & UNINIT) {
+                       if (fromBlock->locals[n].tinfo & TINFO_UNINIT) {
                                VERIFY_ERROR("uninitialized object reference in a 
local variable during a backwards branch");
                        }
                }
                for (n = 0; n < fromBlock->stacksz; n++) {
-                       if (fromBlock->opstack[n].tinfo & UNINIT) {
+                       if (fromBlock->opstack[n].tinfo & TINFO_UNINIT) {
                                VERIFY_ERROR("uninitialized object reference on 
operand stack during a backwards branch");
                        }
                }
@@ -2910,12 +2910,12 @@
                                VERIFY_ERROR("aaload: top of operand stack is not an 
array");
                        }
                        
-                       if (type->tinfo & TINFO_NAMESTR || type->tinfo & TINFO_SIGSTR) 
{
-                               type->tinfo = TINFO_SIGSTR;
+                       if (type->tinfo & TINFO_NAME || type->tinfo & TINFO_SIG) {
+                               type->tinfo = TINFO_SIG;
                                (type->data.sig)++;
                        }
                        else if (type->data.class != TNULL->data.class) {
-                               type->tinfo = TINFO_SIGSTR;
+                               type->tinfo = TINFO_SIG;
                                type->data.sig = CLASS_CNAME(type->data.class) + 1;
                        }
                        DBG(VERIFY3, dprintf("%sarray type: ", indent); 
printType(type); dprintf("\n"); );
@@ -2972,15 +2972,15 @@
                                VERIFY_ERROR("aastore: top of operand stack is not an 
array");
                        }
                        
-                       if (arrayType->tinfo & TINFO_NAMESTR || arrayType->tinfo & 
TINFO_SIGSTR) {
-                               arrayType->tinfo = TINFO_SIGSTR;
+                       if (arrayType->tinfo & TINFO_NAME || arrayType->tinfo & 
TINFO_SIG) {
+                               arrayType->tinfo = TINFO_SIG;
                                (arrayType->data.sig)++;
                        }
                        else {
                                if (arrayType->data.class == TOBJARR->data.class) {
                                        *arrayType = *TOBJ;
                                } else if (arrayType->data.class != TNULL->data.class) 
{
-                                       arrayType->tinfo = TINFO_SIGSTR;
+                                       arrayType->tinfo = TINFO_SIG;
                                        arrayType->data.sig = 
CLASS_CNAME(arrayType->data.class) + 1;
                                }
                        }
@@ -3219,10 +3219,10 @@
                                namestr = CLASS_NAMED(idx, pool);
                                
                                if (*namestr == '[') {
-                                       type->tinfo = TINFO_SIGSTR;
+                                       type->tinfo = TINFO_SIG;
                                        type->data.sig = namestr;
                                } else {
-                                       type->tinfo = TINFO_NAMESTR;
+                                       type->tinfo = TINFO_NAME;
                                        type->data.sig = namestr;
                                }
                        }
@@ -3249,12 +3249,12 @@
                                        VERIFY_ERROR("new: used to create an array");
                                }
                                
-                               type->tinfo = TINFO_NAMESTR;                           
 
+                               type->tinfo = TINFO_NAME;                              
 
                                type->data.name = namestr;
                        }
                        
                        *uninits = pushUninit(*uninits, type);
-                       type->tinfo = UNINIT;
+                       type->tinfo = TINFO_UNINIT;
                        type->data.uninit  = *uninits;
                        
                        DBG(VERIFY3,
@@ -3291,7 +3291,7 @@
                                        sprintf(namestr, "[L%s;", sig);
                                }
                                
-                               type->tinfo = TINFO_SIGSTR;
+                               type->tinfo = TINFO_SIG;
                                type->data.sig  = namestr;
                        }
                        
@@ -3315,7 +3315,7 @@
                                t->tinfo = TINFO_CLASS;
                                t->data.class = CLASS_CLASS(n, pool);
                        } else {
-                               t->tinfo = TINFO_NAMESTR;
+                               t->tinfo = TINFO_NAME;
                                t->data.name = CLASS_NAMED(n, pool);
                        }
                        
@@ -3345,7 +3345,7 @@
                                CHECK_STACK_OVERFLOW(1);
                                block->stacksz++;
                                type = OPSTACK_TOP;
-                               type->tinfo = TINFO_SIGSTR;
+                               type->tinfo = TINFO_SIG;
                                type->data.name = sig;
                                break;
                                
@@ -3382,7 +3382,7 @@
                                
                        case '[':
                        case 'L':
-                               t->tinfo = TINFO_SIGSTR;
+                               t->tinfo = TINFO_SIG;
                                t->data.sig = sig;
                                OPSTACK_POP_T_BLIND(t);
                                break;
@@ -3399,7 +3399,7 @@
                                t->tinfo = TINFO_CLASS;
                                t->data.class = CLASS_CLASS(n, pool);
                        } else {
-                               t->tinfo = TINFO_NAMESTR;
+                               t->tinfo = TINFO_NAME;
                                t->data.name = CLASS_NAMED(n, pool);
                        }
                        
@@ -3429,7 +3429,7 @@
                                
                        case '[':
                        case 'L':
-                               t->tinfo = TINFO_SIGSTR;
+                               t->tinfo = TINFO_SIG;
                                t->data.sig = sig;
                                OPSTACK_POP_T_BLIND(t);
                                break;
@@ -3559,7 +3559,7 @@
                        break;
                case ARETURN:
                        ENSURE_OPSTACK_SIZE(1);
-                       t->tinfo = TINFO_SIGSTR;
+                       t->tinfo = TINFO_SIG;
                        t->data.sig  = getReturnSig(method);
                        if (!typecheck(einfo, this, t, OPSTACK_TOP)) {
                                VERIFY_ERROR("areturn: top of stack is not type 
compatible with method return type");
@@ -3581,7 +3581,7 @@
                        }
                        
                        for (n = 0; n < method->localsz; n++) {
-                               if (block->locals[n].tinfo & UNINIT) {
+                               if (block->locals[n].tinfo & TINFO_UNINIT) {
                                        VERIFY_ERROR("athrow: uninitialized class 
instance in a local variable");
                                }
                        }
@@ -3887,12 +3887,12 @@
                
                
                receiver = &binfo->opstack[binfo->stacksz - (nargs + 1)];
-               if (!(receiver->tinfo & UNINIT) && !isReference(receiver)) {
+               if (!(receiver->tinfo & TINFO_UNINIT) && !isReference(receiver)) {
                        VERIFY_ERROR("invoking a method on something that is not a 
reference");
                }
                
                if (pool->tags[classIdx] == CONSTANT_Class) {
-                       methodRefClass->tinfo = TINFO_NAMESTR;
+                       methodRefClass->tinfo = TINFO_NAME;
                        methodRefClass->data.name = UNRESOLVED_CLASS_NAMED(classIdx, 
pool);
                } else {
                        methodRefClass->tinfo = TINFO_CLASS;
@@ -3901,10 +3901,10 @@
                
                
                if (!strcmp(METHODREF_NAMED(idx,pool), constructor_name->data)) {
-                       if (receiver->tinfo & UNINIT) {
+                       if (receiver->tinfo & TINFO_UNINIT) {
                                UninitializedType* uninit = receiver->data.uninit;
                                
-                               if (receiver->tinfo & UNINIT_SUPER) {
+                               if (receiver->tinfo & TINFO_UNINIT_SUPER) {
                                        Type t;
                                        t.tinfo = TINFO_CLASS;
                                        t.data.class = 
uninit->type.data.class->superclass;
@@ -3937,7 +3937,7 @@
                        }
                }
                else if (!typecheck(einfo, method->class, methodRefClass, receiver)) {
-                       if (receiver->tinfo & UNINIT) {
+                       if (receiver->tinfo & TINFO_UNINIT) {
                                VERIFY_ERROR("invoking a method on an uninitialized 
object reference");
                        }
                        
@@ -3969,7 +3969,7 @@
                switch (*argbuf) {
                case '[':
                case 'L':
-                       t->tinfo = TINFO_SIGSTR;
+                       t->tinfo = TINFO_SIG;
                        t->data.sig = argbuf;
                        
                        if (!typecheck(einfo, method->class, t, 
&binfo->opstack[paramIndex])) {
@@ -4082,7 +4082,7 @@
                *sigs = pushSig(*sigs, argbuf);
                
                binfo->opstack[binfo->stacksz].data.class = (Hjava_lang_Class*)argbuf;
-               binfo->opstack[binfo->stacksz].tinfo = TINFO_SIGSTR;
+               binfo->opstack[binfo->stacksz].tinfo = TINFO_SIG;
                binfo->stacksz++;
                
                // no freeing of the argbuf here...
@@ -4150,7 +4150,7 @@
                if (!strcmp(METHOD_NAMED(method), constructor_name->data)) {
                        // the local reference in a constructor is uninitialized
                        *uninits = pushUninit(*uninits, &locals[0]);
-                       locals[0].tinfo = UNINIT_SUPER;
+                       locals[0].tinfo = TINFO_UNINIT_SUPER;
                        locals[0].data.uninit = *uninits;
                }
        }
@@ -4188,7 +4188,7 @@
                        newsig = checkPtr(KMALLOC((strlen(argbuf) + 1) * 
sizeof(char)));
                        *sigs = pushSig(*sigs, newsig);
                        sprintf(newsig, "%s", argbuf);
-                       locals[paramCount].tinfo = TINFO_SIGSTR;
+                       locals[paramCount].tinfo = TINFO_SIG;
                        locals[paramCount].data.sig = newsig;
                        paramCount++;
                        break;
@@ -4243,7 +4243,7 @@
        const char* sig;
        char* tmp;
 
-       if (type->tinfo & TINFO_NAMESTR) {
+       if (type->tinfo & TINFO_NAME) {
                sig = type->data.sig;
                
                if (*sig != '[') {
@@ -4259,7 +4259,7 @@
                        KFREE(tmp);
                }
        }
-       else if (type->tinfo & TINFO_SIGSTR) {
+       else if (type->tinfo & TINFO_SIG) {
                type->tinfo = TINFO_CLASS;
                type->data.class = getClassFromSignature(type->data.sig, this->loader, 
einfo);
        }
@@ -4276,8 +4276,8 @@
  *
  * note: the precedence of merged types goes (from highest to lowest):
  *     actual pointer to Hjava_lang_Class*
- *     TINFO_SIGSTR
- *     TINFO_NAMESTR
+ *     TINFO_SIG
+ *     TINFO_NAME
  *
  * TODO: right now the priority is to be a common superclass, as stated in
  *       the JVML2 specs.  a better verification technique might check this first,
@@ -4306,7 +4306,7 @@
        else if (t2->data.class == TUNSTABLE->data.class || sameType(t1, t2)) {
                return false;
        }
-       else if (t1->tinfo & UNINIT || t2->tinfo & UNINIT ||
+       else if (t1->tinfo & TINFO_UNINIT || t2->tinfo & TINFO_UNINIT ||
                 !isReference(t1) || !isReference(t2)) {
                
                *t2 = *TUNSTABLE;
@@ -4397,10 +4397,10 @@
 bool
 isReference(const Type* type)
 {
-       return (type->tinfo & TINFO_NAMESTR ||
-               type->tinfo & TINFO_SIGSTR ||
+       return (type->tinfo & TINFO_NAME ||
+               type->tinfo & TINFO_SIG ||
                type->tinfo & TINFO_CLASS ||
-               type->tinfo & UNINIT);
+               type->tinfo & TINFO_UNINIT);
 }
 
 /*
@@ -4414,7 +4414,7 @@
        if (!isReference(type)) {
                return false;
        }
-       else if (type->tinfo & TINFO_NAMESTR || type->tinfo & TINFO_SIGSTR) {
+       else if (type->tinfo & TINFO_NAME || type->tinfo & TINFO_SIG) {
                return (*(type->data.sig) == '[');
        }
        else if (type->tinfo != TINFO_CLASS) {
@@ -4447,9 +4447,9 @@
                return (t2->tinfo == TINFO_PRIMITIVE &&
                        t1->data.class == t2->data.class);
                
-       case UNINIT:
-       case UNINIT_SUPER:
-               return (t2->tinfo & UNINIT &&
+       case TINFO_UNINIT:
+       case TINFO_UNINIT_SUPER:
+               return (t2->tinfo & TINFO_UNINIT &&
                        (t1->data.uninit == t2->data.uninit ||
                         sameRefType(&(t1->data.uninit->type),
                                     &(t2->data.uninit->type))));
@@ -4458,11 +4458,11 @@
                DBG(VERIFY3, dprintf("%ssameType(): unrecognized tinfo (%d)\n", 
indent, t1->tinfo); );
                return false;
                
-       case TINFO_SIGSTR:
-       case TINFO_NAMESTR:
+       case TINFO_SIG:
+       case TINFO_NAME:
        case TINFO_CLASS:
-               return ((t2->tinfo == TINFO_SIGSTR ||
-                        t2->tinfo == TINFO_NAMESTR || 
+               return ((t2->tinfo == TINFO_SIG ||
+                        t2->tinfo == TINFO_NAME || 
                         t2->tinfo == TINFO_CLASS) &&
                        sameRefType(t1,t2));
        }
@@ -4486,13 +4486,13 @@
                return true;
        }
        
-       if (t1->tinfo & TINFO_NAMESTR) {
+       if (t1->tinfo & TINFO_NAME) {
                sig1 = t1->data.name;
                
-               if (t2->tinfo & TINFO_NAMESTR) {
+               if (t2->tinfo & TINFO_NAME) {
                        return (!strcmp(sig1, t2->data.name));
                }
-               else if (t2->tinfo & TINFO_SIGSTR) {
+               else if (t2->tinfo & TINFO_SIG) {
                        sig2 = t2->data.sig;
                        
                        len1 = strlen(sig1);
@@ -4510,13 +4510,13 @@
                *t1 = *t2;
                return true;
        }
-       else if (t1->tinfo & TINFO_SIGSTR) {
+       else if (t1->tinfo & TINFO_SIG) {
                sig1 = t1->data.sig;
                
-               if (t2->tinfo & TINFO_SIGSTR) {
+               if (t2->tinfo & TINFO_SIG) {
                        return (!strcmp(sig1, t2->data.sig));
                }
-               else if (t2->tinfo & TINFO_NAMESTR) {
+               else if (t2->tinfo & TINFO_NAME) {
                        sig2 = t2->data.name;
                        
                        len1 = strlen(sig1);
@@ -4546,7 +4546,7 @@
        else {
                sig1 = CLASS_CNAME(t1->data.class);
                
-               if (t2->tinfo & TINFO_SIGSTR) {
+               if (t2->tinfo & TINFO_SIG) {
                        sig2 = t2->data.sig;
                        
                        len1 = strlen(sig1);
@@ -4558,7 +4558,7 @@
                        *t2 = *t1;
                        return true;
                }
-               else if (t2->tinfo & TINFO_NAMESTR) {
+               else if (t2->tinfo & TINFO_NAME) {
                        sig2 = t2->data.name;
                        
                        if (strcmp(sig1, sig2))
@@ -4588,7 +4588,7 @@
        if (sameType(t1, t2)) {
                return true;
        }
-       else if (t1->tinfo & UNINIT || t2->tinfo & UNINIT) {
+       else if (t1->tinfo & TINFO_UNINIT || t2->tinfo & TINFO_UNINIT) {
                return false;
        }
        else if (!isReference(t1) || !isReference(t2)) {
@@ -4762,8 +4762,8 @@
 bool
 checkUninit(Hjava_lang_Class* this, Type* type)
 {
-       if (type->tinfo & UNINIT) {
-               if (type->tinfo & UNINIT_SUPER) {
+       if (type->tinfo & TINFO_UNINIT) {
+               if (type->tinfo & TINFO_UNINIT_SUPER) {
                        UninitializedType* uninit = type->data.uninit;
                        Type t;
                        t.tinfo = TINFO_CLASS;
@@ -4817,14 +4817,14 @@
        uint32 n;
        
        for (n = 0; n < method->localsz; n++) {
-               if (binfo->locals[n].tinfo & UNINIT &&
+               if (binfo->locals[n].tinfo & TINFO_UNINIT &&
                    ((UninitializedType*)binfo->locals[n].data.class) == uninit) {
                        binfo->locals[n] = uninit->type;
                }
        }
        
        for (n = 0; n < binfo->stacksz; n++) {
-               if (binfo->opstack[n].tinfo & UNINIT &&
+               if (binfo->opstack[n].tinfo & TINFO_UNINIT &&
                    ((UninitializedType*)binfo->opstack[n].data.class) == uninit) {
                        binfo->opstack[n] = uninit->type;
                }
@@ -5186,11 +5186,11 @@
                }
                break;
                
-       case TINFO_SIGSTR:
+       case TINFO_SIG:
                dprintf("%s", t->data.sig);
                break;
                
-       case TINFO_NAMESTR:
+       case TINFO_NAME:
                dprintf("%s", t->data.name);
                break;
                
@@ -5238,8 +5238,8 @@
                }
                break;
                
-       case UNINIT:
-       case UNINIT_SUPER:
+       case TINFO_UNINIT:
+       case TINFO_UNINIT_SUPER:
                printType(&(t->data.uninit->type));
                break;
                
Index: kaffe/kaffe/kaffevm/verify.h
diff -u kaffe/kaffe/kaffevm/verify.h:1.4 kaffe/kaffe/kaffevm/verify.h:1.5
--- kaffe/kaffe/kaffevm/verify.h:1.4    Wed Aug 13 07:13:15 2003
+++ kaffe/kaffe/kaffevm/verify.h        Thu Aug 14 07:23:41 2003
@@ -22,46 +22,58 @@
  * Pass 3
  **********************************************************/
 struct unitialized_types_double_list;
-struct type_info;
+struct Type;
 
-typedef struct type_info
+typedef struct Type
 {
        uint32 tinfo;
        
        union {
+               // different ways to refer to an object reference
                const char* name;
                const char* sig;
                Hjava_lang_Class* class;
+               
+               // uninitialized object reference
                struct unitialized_types_double_list* uninit;
-               uint32 addr;  // return address for TINFO_ADDR
+               
+               // list of supertypes in the event of multiple inheritence of 
interfaces.
+               Hjava_lang_Class** supertypes;
+               
+               // return address for TINFO_ADDR
+               uint32 addr;
        } data;
 } Type;
 
 // status flags for opstack/local info arrays
 //
-//   TINFO_SYSTEM    internal type, such as UNSTABLE or VOID
-//   TINFO_ADDR      return address type
-//   TINFO_PRIMITIVE Type.data.class is some primitive class, like intClass
-//   TINFO_CLASS     Type.data.class
-//   TINFO_NAMESTR   Type.data.name represents the class' fully qualified name
-//   TINFO_SIGSTR    Type.data.sig  represents the class' fully qualified type 
signature
-//   UNINIT          is a class instance created by NEW that has yet to be 
initialized.
-//                   the type is really an (UninitializedType*), so that dups, moves, 
etc. ensure that whatever
-//                   copies of the type are around are all initialized when the 
<init>() is called.
-//   UNINIT_SUPER    reserved for the self-reference in a constructor method.  when 
the receiver of a call to <init>()
-//                   is of type UNINIT_SUPER, then the <init>() referenced may be in 
the current class of in its
-//                   superclass.
+//   TINFO_SYSTEM       internal type, such as UNSTABLE or VOID
+//   TINFO_ADDR         return address type
+//   TINFO_PRIMITIVE    Type.data.class is some primitive class, like intClass
+//   TINFO_CLASS        Type.data.class
+//   TINFO_NAME         Type.data.name represents the class' fully qualified name
+//   TINFO_SIG          Type.data.sig  represents the class' fully qualified type 
signature
+//   TINFO_UNINIT       is a class instance created by NEW that has yet to be 
initialized.
+//                      the type is really an (UninitializedType*), so that dups, 
moves, etc. ensure that whatever
+//                      copies of the type are around are all initialized when the 
<init>() is called.
+//   TINFO_UNINIT_SUPER reserved for the self-reference in a constructor method.  
when the receiver of a call to <init>()
+//                      is of type TINFO_UNINIT_SUPER, then the <init>() referenced 
may be in the current class of in its
+//                      superclass.
+//   TINFO_SUPERLIST    a list of supertypes.  used when merging two types that have 
multiple common supertypes.
+//                      this can occur with the multiple inheritence of interfaces.
+//                      the zeroth element is always a common superclass, the rest 
are common superinterfaces.
 #define TINFO_SYSTEM       0
 #define TINFO_ADDR         1
 #define TINFO_PRIMITIVE    2
-#define TINFO_SIGSTR       4
-#define TINFO_NAMESTR      8
+#define TINFO_SIG          4
+#define TINFO_NAME         8
 #define TINFO_CLASS        16
-#define UNINIT             32
-#define UNINIT_SUPER       96
+#define TINFO_UNINIT       32
+#define TINFO_UNINIT_SUPER 96
+#define TINFO_SUPERLIST    128
 
-// returnAddress type
 #define IS_ADDRESS(_TINFO) ((_TINFO)->tinfo & TINFO_ADDR)
+#define IS_PRIMITIVE_TYPE(_TINFO) ((_TINFO)->tinfo & TINFO_PRIMITIVE)
 
 
 /*
@@ -73,7 +85,7 @@
  */
 typedef struct unitialized_types_double_list
 {
-       struct type_info type;
+       struct Type type;
        
        struct unitialized_types_double_list* prev;
        struct unitialized_types_double_list* next;

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to