PatchSet 4425 
Date: 2004/02/15 16:40:44
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Replaced macro by static inline function

2004-02-15  Dalibor Topic <[EMAIL PROTECTED]>

        * kaffe/kaffevm/verify.c
        (verifyErrorInVerifyBasicBlock): New static inline function.
        (VERIFY_ERROR) Removed.
        Replaced use of VERIFY_ERROR by verifyErrorInVerifyBasicBlock.

Members: 
        ChangeLog:1.2008->1.2009 
        kaffe/kaffevm/verify.c:1.41->1.42 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2008 kaffe/ChangeLog:1.2009
--- kaffe/ChangeLog:1.2008      Sun Feb 15 15:50:50 2004
+++ kaffe/ChangeLog     Sun Feb 15 16:40:44 2004
@@ -1,6 +1,13 @@
 2004-02-15  Dalibor Topic <[EMAIL PROTECTED]>
 
         * kaffe/kaffevm/verify.c
+        (verifyErrorInVerifyBasicBlock): New static inline function.
+        (VERIFY_ERROR) Removed.
+        Replaced use of VERIFY_ERROR by verifyErrorInVerifyBasicBlock.
+
+2004-02-15  Dalibor Topic <[EMAIL PROTECTED]>
+
+        * kaffe/kaffevm/verify.c
         (verifyErrorInMerge): New static inline function.
         (VERIFY_ERROR) Removed.
         Replaced use of VERIFY_ERROR by verifyErrorInMerge.
Index: kaffe/kaffe/kaffevm/verify.c
diff -u kaffe/kaffe/kaffevm/verify.c:1.41 kaffe/kaffe/kaffevm/verify.c:1.42
--- kaffe/kaffe/kaffevm/verify.c:1.41   Sun Feb 15 15:50:52 2004
+++ kaffe/kaffe/kaffevm/verify.c        Sun Feb 15 16:40:45 2004
@@ -2473,8 +2473,23 @@
        return(true);
 }
 
-
-
+/*
+ * Helper function for error reporting in verifyBasicBlock.
+ */
+static inline
+bool
+verifyErrorInVerifyBasicBlock(errorInfo* einfo,
+                             const Method* method,
+                             Hjava_lang_Class* this,
+                             const char * msg)
+{
+       if (einfo->type == 0) {
+               postExceptionMessage(einfo, JAVA_LANG(VerifyError),
+                                    "in method \"%s.%s\": %s",
+                                    CLASS_CNAME(this), METHOD_NAMED(method), msg);
+       }
+       return(false);
+}
 
 /*
  * verifyBasicBlock()
@@ -2521,13 +2536,6 @@
         *         - those dealing with locals variables
         *         - those dealing with the operand stack
         
**************************************************************************************************/
-#define VERIFY_ERROR(_MSG) \
-       if (einfo->type == 0) { \
-               postExceptionMessage(einfo, JAVA_LANG(VerifyError), \
-                                    "in method \"%s.%s\": %s", \
-                                    CLASS_CNAME(this), METHOD_NAMED(method), _MSG); \
-       } \
-       return(false)
 
 #define GET_IDX \
        idx = code[pc + 1]
@@ -2540,26 +2548,26 @@
 #define ENSURE_LOCAL_TYPE(_N, _TINFO) \
        if (!typecheck(einfo, this, (_TINFO), &block->locals[_N])) { \
                if (block->locals[_N].data.class == TUNSTABLE->data.class) { \
-                       VERIFY_ERROR("attempt to access an unstable local variable"); \
+                       return verifyErrorInVerifyBasicBlock(einfo, method, this, 
"attempt to access an unstable local variable"); \
                } else { \
-                       VERIFY_ERROR("attempt to access a local variable not of the 
correct type"); \
+                       return verifyErrorInVerifyBasicBlock(einfo, method, this, 
"attempt to access a local variable not of the correct type"); \
                } \
        } 
        
        /* only use with TLONG and TDOUBLE */
 #define ENSURE_LOCAL_WTYPE(_N, _TINFO) \
        if (block->locals[_N].data.class != (_TINFO)->data.class) { \
-               VERIFY_ERROR("local variable not of correct type"); \
+               return verifyErrorInVerifyBasicBlock(einfo, method, this, "local 
variable not of correct type"); \
        } \
        else if (block->locals[_N + 1].data.class != TWIDE->data.class) { \
-               VERIFY_ERROR("accessing a long or double in a local where the 
following local has been corrupted"); \
+               return verifyErrorInVerifyBasicBlock(einfo, method, this, "accessing a 
long or double in a local where the following local has been corrupted"); \
        }
 
        
 #define ENSURE_OPSTACK_SIZE(_N) \
        if (block->stacksz < (_N)) { \
                 DBG(VERIFY3, dprintf("                here's the stack: \n"); 
printBlock(method, block, "                    "); ); \
-               VERIFY_ERROR("not enough items on stack for operation"); \
+               return verifyErrorInVerifyBasicBlock(einfo, method, this, "not enough 
items on stack for operation"); \
        }
 
 #define CHECK_STACK_OVERFLOW(_N) \
@@ -2567,7 +2575,7 @@
                DBG(VERIFY3, dprintf("                block->stacksz: %d :: N = %d :: 
method->stacksz = %d\n", \
                                     block->stacksz, _N, method->stacksz); ); \
                 DBG(VERIFY3, dprintf("                here's the stack: \n"); 
printBlock(method, block, "                    "); ); \
-               VERIFY_ERROR("stack overflow"); \
+               return verifyErrorInVerifyBasicBlock(einfo, method, this, "stack 
overflow"); \
        }
        
        
@@ -2613,7 +2621,7 @@
                    printType(OPSTACK_TOP); \
                    dprintf(" vs. what's we wanted: "); \
                    printType(_TINFO); dprintf("\n"); ); \
-               VERIFY_ERROR("top of opstack does not have desired type"); \
+               return verifyErrorInVerifyBasicBlock(einfo, method, this, "top of 
opstack does not have desired type"); \
        }
        
 #define OPSTACK_PEEK_T(_TINFO) \
@@ -2625,9 +2633,9 @@
         */
 #define OPSTACK_WPEEK_T_BLIND(_TINFO) \
        if (OPSTACK_TOP->data.class != TWIDE->data.class) { \
-               VERIFY_ERROR("trying to pop a wide value off operand stack where there 
is none"); \
+               return verifyErrorInVerifyBasicBlock(einfo, method, this, "trying to 
pop a wide value off operand stack where there is none"); \
        } else if (OPSTACK_WTOP->data.class != (_TINFO)->data.class) { \
-               VERIFY_ERROR("mismatched stack types"); \
+               return verifyErrorInVerifyBasicBlock(einfo, method, this, "mismatched 
stack types"); \
        }
        
 #define OPSTACK_WPEEK_T(_TINFO) \
@@ -2800,7 +2808,7 @@
                ALOAD_common:
                        if (!isReference(&block->locals[idx])) {
                                DBG(VERIFY3, dprintf("%sERROR: ", indent); 
printType(&block->locals[idx]); dprintf("\n"); );
-                               VERIFY_ERROR("aload<_n> where local variable does not 
contain an object reference");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "aload<_n> where local variable does not contain an object reference");
                        }
                        
                        OPSTACK_PUSH(&block->locals[idx]);
@@ -2819,7 +2827,7 @@
                        type = OPSTACK_TOP;
                        
                        if (!IS_ADDRESS(type) && !isReference(type)) {
-                               VERIFY_ERROR("astore: top of stack is not a return 
address or reference type");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "astore: top of stack is not a return address or reference type");
                        }
                        
                        block->locals[idx] = *type;
@@ -2954,7 +2962,7 @@
                        case TYPE_Short:   OPSTACK_PUSH(TSHORTARR);  break;
                        case TYPE_Int:     OPSTACK_PUSH(TINTARR);    break;
                        case TYPE_Long:    OPSTACK_PUSH(TLONGARR);   break;
-                       default: VERIFY_ERROR("newarray of unknown type");
+                       default: return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "newarray of unknown type");
                        }
                        break;
                        
@@ -2964,7 +2972,7 @@
                        type = OPSTACK_TOP;
                        if (!isArray(type)) {
                                DBG(VERIFY3, dprintf("%stype = ", indent); 
printType(type); dprintf("\n"); );
-                               VERIFY_ERROR("arraylength: top of operand stack is not 
an array");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "arraylength: top of operand stack is not an array");
                        }
                        
                        *type = *TINT;
@@ -2986,14 +2994,14 @@
                        ENSURE_OPSTACK_SIZE(2);
                        
                        if (OPSTACK_TOP->data.class != TINT->data.class) {
-                               VERIFY_ERROR("aaload: item on top of stack is not an 
integer");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "aaload: item on top of stack is not an integer");
                        }
                        OPSTACK_POP_BLIND;
                        
                        type = OPSTACK_TOP;
                        if (!isArray(type)) {
                                DBG(VERIFY3, dprintf("%serror: type = ", indent); 
printType(type); dprintf("\n"); );
-                               VERIFY_ERROR("aaload: top of operand stack is not an 
array");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "aaload: top of operand stack is not an array");
                        }
                        
                        if (type->tinfo & TINFO_NAME || type->tinfo & TINFO_SIG) {
@@ -3027,7 +3035,7 @@
                                     dprintf("                OPSTACK_TOP: ");
                                     printType(OPSTACK_TOP);
                                     dprintf(" vs. what's we wanted: TBYTEARR or 
TBOOLARR"); )
-                                VERIFY_ERROR("top of opstack does not have desired 
type");
+                                return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "top of opstack does not have desired type");
                        }
 
                        OPSTACK_POP_BLIND;
@@ -3042,7 +3050,7 @@
                        ENSURE_OPSTACK_SIZE(3);
                        
                        if (OPSTACK_ITEM(2)->data.class != TINT->data.class) {
-                               VERIFY_ERROR("aastore: array index is not an integer");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "aastore: array index is not an integer");
                        }
                        
                        type      = OPSTACK_ITEM(1);
@@ -3056,7 +3064,7 @@
                        
                        if (!isArray(arrayType)) {
                                DBG(VERIFY3, dprintf("%serror: type = ", indent); 
printType(type); dprintf("\n"); );
-                               VERIFY_ERROR("aastore: top of operand stack is not an 
array");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "aastore: top of operand stack is not an array");
                        }
                        
                        if (arrayType->tinfo & TINFO_NAME || arrayType->tinfo & 
TINFO_SIG) {
@@ -3073,7 +3081,7 @@
                        }
                        
                        if (!typecheck(einfo, this, arrayType, type)) {
-                               VERIFY_ERROR("attempting to store incompatible type in 
array");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "attempting to store incompatible type in array");
                        }
                        
                        OPSTACK_POP_N_BLIND(3);
@@ -3113,7 +3121,7 @@
                                    dprintf("                OPSTACK_TOP: ");
                                    printType(OPSTACK_TOP);
                                    dprintf(" vs. what's we wanted: TBYTEARR or 
TBOOLARR"); )
-                               VERIFY_ERROR("top of opstack does not have desired 
type");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "top of opstack does not have desired type");
                        }
                        OPSTACK_POP_BLIND;
                        break;                  
@@ -3268,7 +3276,7 @@
                case INSTANCEOF:
                        ENSURE_OPSTACK_SIZE(1);
                        if (!isReference(OPSTACK_ITEM(1))) {
-                               VERIFY_ERROR("instanceof: top of stack is not a 
reference type");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "instanceof: top of stack is not a reference type");
                        }
                        *OPSTACK_TOP = *TINT;
                        break;
@@ -3283,7 +3291,7 @@
                        ENSURE_OPSTACK_SIZE(n);
                        while (n > 0) {
                                if (OPSTACK_TOP->data.class != TINT->data.class) {
-                                       VERIFY_ERROR("multinewarray: first <n> things 
on opstack must be integers");
+                                       return verifyErrorInVerifyBasicBlock(einfo, 
method, this, "multinewarray: first <n> things on opstack must be integers");
                                }
                                OPSTACK_POP_BLIND;
                                n--;
@@ -3333,7 +3341,7 @@
                                const char* namestr = CLASS_NAMED(idx, pool);
                                
                                if (*namestr == '[') {
-                                       VERIFY_ERROR("new: used to create an array");
+                                       return verifyErrorInVerifyBasicBlock(einfo, 
method, this, "new: used to create an array");
                                }
                                
                                type->tinfo = TINFO_NAME;                              
 
@@ -3362,7 +3370,7 @@
                                type->data.class  = lookupArray(class, einfo);
                                
                                if (type->data.class == NULL) {
-                                       VERIFY_ERROR("anewarray: error creating array 
type");
+                                       return verifyErrorInVerifyBasicBlock(einfo, 
method, this, "anewarray: error creating array type");
                                }
                        } else {
                                char* namestr;
@@ -3392,7 +3400,7 @@
                case GETFIELD:
                        ENSURE_OPSTACK_SIZE(1);
                        if (!checkUninit(this, OPSTACK_TOP)) {
-                               VERIFY_ERROR("getfield: uninitialized type on top of 
operand stack");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "getfield: uninitialized type on top of operand stack");
                        }
                        
                        GET_WIDX;
@@ -3438,7 +3446,7 @@
                                
                        default:
                                DBG(VERIFY3, dprintf("%sweird type signature: %s", 
indent, sig); );
-                               VERIFY_ERROR("get{field/static}: unrecognized type 
signature");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "get{field/static}: unrecognized type signature");
                                break;
                        }
                        break;
@@ -3450,7 +3458,7 @@
                        ENSURE_OPSTACK_SIZE(n);
                        
                        if (!checkUninit(this, OPSTACK_TOP)) {
-                               VERIFY_ERROR("putfield: uninitialized type on top of 
operand stack");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "putfield: uninitialized type on top of operand stack");
                        }
                        
                        GET_WIDX;
@@ -3476,7 +3484,7 @@
                                
                        default:
                                DBG(VERIFY3, dprintf("%sweird type signature: %s", 
indent, sig); );
-                               VERIFY_ERROR("put{field/static}: unrecognized type 
signature");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "put{field/static}: unrecognized type signature");
                                break;
                        }
                        
@@ -3523,7 +3531,7 @@
                                
                        default:
                                DBG(VERIFY3, dprintf("%sweird type signature: %s", 
indent, sig); );
-                               VERIFY_ERROR("put{field/static}: unrecognized type 
signature");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "put{field/static}: unrecognized type signature");
                                break;
                        }
                        break;
@@ -3554,7 +3562,7 @@
                        ENSURE_OPSTACK_SIZE(2);
                        if (!isReference(OPSTACK_TOP) ||
                            !isReference(OPSTACK_WTOP)) {
-                               VERIFY_ERROR("if_acmp* when item on top of stack is 
not a reference type");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "if_acmp* when item on top of stack is not a reference type");
                        }
                        OPSTACK_POP_BLIND;
                        OPSTACK_POP_BLIND;
@@ -3580,7 +3588,7 @@
                case IFNULL:
                        ENSURE_OPSTACK_SIZE(1);
                        if (!isReference(OPSTACK_ITEM(1))) {
-                               VERIFY_ERROR("if[non]null: thing on top of stack is 
not a reference");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "if[non]null: thing on top of stack is not a reference");
                        }
                        OPSTACK_POP_BLIND;
                        break;
@@ -3605,7 +3613,7 @@
                                    printBlock(method, block, "                "); );
                                
                                /* propagate error */
-                               VERIFY_ERROR("invoke* error");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "invoke* error");
                        }
                        break;
                        
@@ -3614,34 +3622,34 @@
                        OPSTACK_PEEK_T(TINT);
                        sig = getReturnSig(method);
                        if (strlen(sig) != 1 || (*sig != 'I' && *sig != 'Z' && *sig != 
'S' && *sig != 'B' && *sig != 'C')) {
-                               VERIFY_ERROR("ireturn: method doesn't return an 
integer");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "ireturn: method doesn't return an integer");
                        }
                        break;
                case FRETURN:
                        OPSTACK_PEEK_T(TFLOAT);
                        sig = getReturnSig(method);
                        if (strcmp(sig, "F")) {
-                               VERIFY_ERROR("freturn: method doesn't return an 
float");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "freturn: method doesn't return an float");
                        }
                        break;
                case LRETURN:
                        OPSTACK_WPEEK_T(TLONG);
                        sig = getReturnSig(method);
                        if (strcmp(sig, "J")) {
-                               VERIFY_ERROR("lreturn: method doesn't return a long");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "lreturn: method doesn't return a long");
                        }
                        break;
                case DRETURN:
                        OPSTACK_WPEEK_T(TDOUBLE);
                        sig = getReturnSig(method);
                        if (strcmp(sig, "D")) {
-                               VERIFY_ERROR("dreturn: method doesn't return a 
double");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "dreturn: method doesn't return a double");
                        }
                        break;
                case RETURN:
                        sig = getReturnSig(method);
                        if (strcmp(sig, "V")) {
-                               VERIFY_ERROR("return: must return something in a 
non-void function");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "return: must return something in a non-void function");
                        }
                        break;
                case ARETURN:
@@ -3649,7 +3657,7 @@
                        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");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "areturn: top of stack is not type compatible with method return type");
                        }
                        break;
                        
@@ -3665,12 +3673,12 @@
                        t->data.class = javaLangThrowable;
                        if (!typecheck(einfo, this, t, OPSTACK_TOP)) {
                                DBG(VERIFY3, dprintf("%sATHROW error: ", indent); 
printType(OPSTACK_TOP); dprintf ("\n"); );
-                               VERIFY_ERROR("athrow: object on top of stack is not a 
subclass of throwable");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "athrow: object on top of stack is not a subclass of throwable");
                        }
                        
                        for (n = 0; n < method->localsz; n++) {
                                if (block->locals[n].tinfo & TINFO_UNINIT) {
-                                       VERIFY_ERROR("athrow: uninitialized class 
instance in a local variable");
+                                       return verifyErrorInVerifyBasicBlock(einfo, 
method, this, "athrow: uninitialized class instance in a local variable");
                                }
                        }
                        break;
@@ -3685,7 +3693,7 @@
                        
                case BREAKPOINT:
                        /* for internal use only: cannot appear in a class file */
-                       VERIFY_ERROR("breakpoint instruction cannot appear in 
classfile");
+                       return verifyErrorInVerifyBasicBlock(einfo, method, this, 
"breakpoint instruction cannot appear in classfile");
                        break;
                        
                        
@@ -3693,7 +3701,7 @@
                case MONITOREXIT:
                        ENSURE_OPSTACK_SIZE(1);
                        if(!isReference(OPSTACK_TOP)) {
-                               VERIFY_ERROR("monitor*: top of stack is not an object 
reference");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "monitor*: top of stack is not an object reference");
                        }
                        OPSTACK_POP_BLIND;
                        break;
@@ -3702,7 +3710,7 @@
                case DUP:
                        ENSURE_OPSTACK_SIZE(1);
                        if (isWide(OPSTACK_TOP)) {
-                               VERIFY_ERROR("dup: on a long or double");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "dup: on a long or double");
                        }
                        
                        OPSTACK_PUSH(OPSTACK_TOP);
@@ -3711,7 +3719,7 @@
                case DUP_X1:
                        ENSURE_OPSTACK_SIZE(2);
                        if (isWide(OPSTACK_TOP) || isWide(OPSTACK_WTOP)) {
-                               VERIFY_ERROR("dup_x1: splits up a double or long");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "dup_x1: splits up a double or long");
                        }
                        
                        OPSTACK_PUSH(OPSTACK_TOP);
@@ -3723,7 +3731,7 @@
                case DUP_X2:
                        ENSURE_OPSTACK_SIZE(3);
                        if (isWide(OPSTACK_TOP)) {
-                               VERIFY_ERROR("cannot dup_x2 when top item on operand 
stack is a two byte item");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "cannot dup_x2 when top item on operand stack is a two byte item");
                        }
                        
                        OPSTACK_PUSH(OPSTACK_TOP);
@@ -3743,7 +3751,7 @@
                case DUP2_X1:
                        ENSURE_OPSTACK_SIZE(2);
                        if (isWide(OPSTACK_ITEM(2))) {
-                               VERIFY_ERROR("dup_x1 requires top 2 bytes on operand 
stack to be single bytes items");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "dup_x1 requires top 2 bytes on operand stack to be single bytes items");
                        }
                        CHECK_STACK_OVERFLOW(2);
                        
@@ -3758,7 +3766,7 @@
                case DUP2_X2:
                        ENSURE_OPSTACK_SIZE(4);
                        if (isWide(OPSTACK_ITEM(2)) || isWide(OPSTACK_ITEM(4))) {
-                               VERIFY_ERROR("dup2_x2 where either 2nd or 4th byte is 
2nd half of a 2 byte item");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "dup2_x2 where either 2nd or 4th byte is 2nd half of a 2 byte item");
                        }
                        CHECK_STACK_OVERFLOW(2);
                        
@@ -3775,7 +3783,7 @@
                case SWAP:
                        ENSURE_OPSTACK_SIZE(2);
                        if (isWide(OPSTACK_TOP) || isWide(OPSTACK_WTOP)) {
-                               VERIFY_ERROR("cannot swap 2 bytes of a long or 
double");
+                               return verifyErrorInVerifyBasicBlock(einfo, method, 
this, "cannot swap 2 bytes of a long or double");
                        }
                        
                        *type         = *OPSTACK_TOP;
@@ -3791,7 +3799,7 @@
                        
                default:
                        /* should never get here because of preprocessing in 
defineBasicBlocks() */
-                       VERIFY_ERROR("unknown opcode encountered");
+                       return verifyErrorInVerifyBasicBlock(einfo, method, this, 
"unknown opcode encountered");
                }
                
                
@@ -3847,8 +3855,6 @@
 
 #undef GET_WIDX
 #undef GET_IDX
-
-#undef VERIFY_ERROR
 }
 
 

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

Reply via email to