PatchSet 4420 
Date: 2004/02/13 09:57:01
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Replaced macro by static inline function

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

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

Members: 
        ChangeLog:1.2003->1.2004 
        kaffe/kaffevm/verify.c:1.37->1.38 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2003 kaffe/ChangeLog:1.2004
--- kaffe/ChangeLog:1.2003      Thu Feb 12 18:11:05 2004
+++ kaffe/ChangeLog     Fri Feb 13 09:57:01 2004
@@ -1,3 +1,10 @@
+2004-02-13  Dalibor Topic <[EMAIL PROTECTED]>
+
+        * kaffe/kaffevm/verify.c
+        (verifyErrorInVerifyMethod3a): New static inline function.
+        (VERIFY_ERROR) Removed.
+        Replaced use of VERIFY_ERROR by verifyErrorInVerifyMethod3a.
+
 2004-02-12  Dalibor Topic <[EMAIL PROTECTED]>
 
         * kaffe/kaffevm/verify.c
Index: kaffe/kaffe/kaffevm/verify.c
diff -u kaffe/kaffe/kaffevm/verify.c:1.37 kaffe/kaffe/kaffevm/verify.c:1.38
--- kaffe/kaffe/kaffevm/verify.c:1.37   Thu Feb 12 18:11:07 2004
+++ kaffe/kaffe/kaffevm/verify.c        Fri Feb 13 09:57:03 2004
@@ -1321,6 +1321,20 @@
 }
 
 
+static inline
+BlockInfo **
+verifyErrorInVerifyMethod3a(errorInfo* einfo,
+                           Method* method,
+                           const char * msg)
+{
+       if (einfo->type == 0) {
+               postExceptionMessage(einfo, JAVA_LANG(VerifyError),
+                                    "in method \"%s.%s\": %s",
+                                    CLASS_CNAME(method->class), METHOD_NAMED(method), 
msg);
+       }
+       return NULL;
+}
+
 /*
  * verifyMethod3a()
  *     check static constraints.  section 4.8.1 of JVML Spec 2.
@@ -1338,22 +1352,15 @@
               uint32* status,    /* array of status info for all opcodes */
               uint32* numBlocks) /* number of basic blocks */
 {
-#define VERIFY_ERROR(_MSG) \
-       if (einfo->type == 0) { \
-               postExceptionMessage(einfo, JAVA_LANG(VerifyError), \
-                                    "in method \"%s.%s\": %s", \
-                                    CLASS_CNAME(method->class), METHOD_NAMED(method), 
_MSG); \
-       } \
-       return NULL
 
 #define ENSURE_NON_WIDE \
        if (wide) { \
-               VERIFY_ERROR("illegal instruction following wide instruction"); \
+               return verifyErrorInVerifyMethod3a(einfo, method, "illegal instruction 
following wide instruction"); \
        }
 
 #define CHECK_POOL_IDX(_IDX) \
        if (_IDX > pool->size) { \
-               VERIFY_ERROR("attempt to access a constant pool index beyond constant 
pool range"); \
+               return verifyErrorInVerifyMethod3a(einfo, method, "attempt to access a 
constant pool index beyond constant pool range"); \
        }
        
 #define GET_IDX(_IDX, _PC) \
@@ -1369,7 +1376,7 @@
 #define BRANCH_IN_BOUNDS(_N, _INST) \
        if (_N < 0 || _N >= codelen) { \
                DBG(VERIFY3, dprintf("ERROR: branch to (%d) out of bound (%d) \n", _N, 
codelen); ); \
-               VERIFY_ERROR("branch out of method code"); \
+               return verifyErrorInVerifyMethod3a(einfo, method, "branch out of 
method code"); \
        }
 
         /* makes sure the index given for a local variable is within the correct 
index */
@@ -1380,7 +1387,7 @@
                    printInstruction(code[pc]); \
                    dprintf(", localsz = %d, localindex = %d\n", method->localsz, _N); 
\
                    ); \
-               VERIFY_ERROR("attempting to access a local variable beyond local 
array");  \
+               return verifyErrorInVerifyMethod3a(einfo, method, "attempting to 
access a local variable beyond local array");  \
        }
        
        
@@ -1420,7 +1427,7 @@
                DBG(VERIFY3, dprintf("        instruction: (%d) ", pc); 
printInstruction(code[pc]); dprintf("\n"); );
                
                if (codelen - pc < insnLen[code[pc]]) {
-                       VERIFY_ERROR("last operand in code array is cut off");
+                       return verifyErrorInVerifyMethod3a(einfo, method, "last 
operand in code array is cut off");
                }
                
                switch(code[pc]) {
@@ -1470,7 +1477,7 @@
                        n = CONST_TAG(idx, pool);
                        if (n != CONSTANT_Integer && n != CONSTANT_Float &&
                            n != CONSTANT_String && n != CONSTANT_ResolvedString) {
-                               VERIFY_ERROR("ldc* on constant pool entry other than 
int/float/string");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"ldc* on constant pool entry other than int/float/string");
                        }
                        break;
                        
@@ -1478,7 +1485,7 @@
                        GET_WIDX(idx, pc);
                        n = CONST_TAG(idx, pool);
                        if (n != CONSTANT_Double && n != CONSTANT_Long) {
-                               VERIFY_ERROR("ldc2_w on constant pool entry other than 
long or double");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"ldc2_w on constant pool entry other than long or double");
                        }
                        break;
                        
@@ -1489,7 +1496,7 @@
                        GET_WIDX(idx, pc);
                        idx = CONST_TAG(idx, pool);
                        if (idx != CONSTANT_Fieldref) {
-                               VERIFY_ERROR("[get/put][field/static] accesses 
something in the constant pool that is not a CONSTANT_Fieldref");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"[get/put][field/static] accesses something in the constant pool that is not a 
CONSTANT_Fieldref");
                        }
                        break;
                        
@@ -1501,17 +1508,17 @@
                        GET_WIDX(idx, pc);
                        n = CONST_TAG(idx, pool);
                        if (n != CONSTANT_Methodref) {
-                               VERIFY_ERROR("invoke* accesses something in the 
constant pool that is not a CONSTANT_Methodref");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"invoke* accesses something in the constant pool that is not a CONSTANT_Methodref");
                        }
                        
                        sig = METHODREF_SIGD(idx, pool);
                        if (*sig == '<') {
                                if (!strcmp(constructor_name->data, sig)) {
                                        if (code[pc] != INVOKESPECIAL) {
-                                               VERIFY_ERROR("only invokespecial can 
be used to execute <init> methods");
+                                               return 
verifyErrorInVerifyMethod3a(einfo, method, "only invokespecial can be used to execute 
<init> methods");
                                        }
                                } else {
-                                       VERIFY_ERROR("no method with a name whose 
first character is '<' may be called by an invoke instruction");
+                                       return verifyErrorInVerifyMethod3a(einfo, 
method, "no method with a name whose first character is '<' may be called by an invoke 
instruction");
                                }
                        }
                        
@@ -1531,18 +1538,18 @@
                        GET_WIDX(idx, pc);
                        n = CONST_TAG(idx, pool);
                        if (n != CONSTANT_InterfaceMethodref) {
-                               VERIFY_ERROR("invokeinterface accesses something in 
the constant pool that is not a CONSTANT_InterfaceMethodref");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"invokeinterface accesses something in the constant pool that is not a 
CONSTANT_InterfaceMethodref");
                        }
                        
                        sig = INTERFACEMETHODREF_SIGD(idx, pool);
                        if (*sig == '<') {
-                               VERIFY_ERROR("invokeinterface cannot be used to invoke 
any instruction with a name starting with '<'");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"invokeinterface cannot be used to invoke any instruction with a name starting with 
'<'");
                        }
                        
                        if (code[pc + 3] == 0) {
-                               VERIFY_ERROR("fourth byte of invokeinterface is zero");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"fourth byte of invokeinterface is zero");
                        } else if (code[pc + 4] != 0) {
-                               VERIFY_ERROR("fifth byte of invokeinterface is not 
zero");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"fifth byte of invokeinterface is not zero");
                        }
                        
                        break;
@@ -1555,7 +1562,7 @@
                        GET_WIDX(n, pc);
                        n = CONST_TAG(n, pool);
                        if (n != CONSTANT_Class && n != CONSTANT_ResolvedClass) {
-                               VERIFY_ERROR("instanceof/checkcast indexes a constant 
pool entry that is not type CONSTANT_Class or CONSTANT_ResolvedClass");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"instanceof/checkcast indexes a constant pool entry that is not type CONSTANT_Class or 
CONSTANT_ResolvedClass");
                        }
                        
                        break;
@@ -1567,18 +1574,18 @@
                        GET_WIDX(idx, pc);
                        n = CONST_TAG(idx, pool);
                        if (n != CONSTANT_Class && n != CONSTANT_ResolvedClass) {
-                               VERIFY_ERROR("multinewarray indexes a constant pool 
entry that is not type CONSTANT_Class or CONSTANT_ResolvedClass");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"multinewarray indexes a constant pool entry that is not type CONSTANT_Class or 
CONSTANT_ResolvedClass");
                        }
                        
                        /* number of dimensions must be <= num dimensions of array 
type being created */
                        sig = CLASS_NAMED(idx, pool);
                        newpc = code[pc + 3];
                        if (newpc == 0) {
-                               VERIFY_ERROR("dimensions operand of multianewarray 
must be non-zero");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"dimensions operand of multianewarray must be non-zero");
                        }
                        for(n = 0; *sig == '['; sig++, n++);
                        if (n < newpc) {
-                               VERIFY_ERROR("dimensions operand of multianewarray is 
> the number of dimensions in array being created");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"dimensions operand of multianewarray is > the number of dimensions in array being 
created");
                        }
                        
                        break;
@@ -1590,13 +1597,13 @@
                        GET_WIDX(idx, pc);
                        n = CONST_TAG(idx, pool);
                        if (n != CONSTANT_Class && n != CONSTANT_ResolvedClass) {
-                               VERIFY_ERROR("new indexes a constant pool entry that 
is not type CONSTANT_Class or CONSTANT_ResolvedClass");
+                               return verifyErrorInVerifyMethod3a(einfo, method, "new 
indexes a constant pool entry that is not type CONSTANT_Class or 
CONSTANT_ResolvedClass");
                        }
                        
                        /* cannot create arrays with NEW */
                        sig = CLASS_NAMED(idx, pool);
                        if (*sig == '[') {
-                               VERIFY_ERROR("new instruction used to create a new 
array");
+                               return verifyErrorInVerifyMethod3a(einfo, method, "new 
instruction used to create a new array");
                        }
                        break;
                        
@@ -1607,14 +1614,14 @@
                        GET_WIDX(idx, pc);
                        n = CONST_TAG(idx, pool);
                        if (n != CONSTANT_Class && n != CONSTANT_ResolvedClass) {
-                               VERIFY_ERROR("anewarray indexes a constant pool entry 
that is not type CONSTANT_Class or CONSTANT_ResolvedClass");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"anewarray indexes a constant pool entry that is not type CONSTANT_Class or 
CONSTANT_ResolvedClass");
                        }
                        
                        /* count the number of dimensions of the array being 
created...it must be <= 255 */
                        sig = CLASS_NAMED(idx, pool);
                        for (n = 0; *sig == '['; sig++, n++);
                        if (n > 255) {
-                               VERIFY_ERROR("anewarray used to create an array of > 
255 dimensions");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"anewarray used to create an array of > 255 dimensions");
                        }
                        
                        break;
@@ -1624,7 +1631,7 @@
                        
                        n = code[pc + 1];
                        if (n < 4 || n > 11) {
-                               VERIFY_ERROR("newarray operand must be in the range 
[4,11]");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"newarray operand must be in the range [4,11]");
                        }
                        
                        break;
@@ -1807,7 +1814,7 @@
                        n += 4;
                        low = DWORD(code, n);
                        if (low < 0) {
-                               VERIFY_ERROR("lookupswitch with npairs < 0");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"lookupswitch with npairs < 0");
                        }
                        
                        /* make sure all targets are in bounds */
@@ -1851,7 +1858,7 @@
                        high = DWORD(code, n + 8);
                        if (high < low) {
                                DBG(VERIFY3, dprintf("ERROR: low = %d, high = %d\n", 
low, high); );
-                               VERIFY_ERROR("tableswitch high val < low val");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"tableswitch high val < low val");
                        }
                        n += 12;
                        
@@ -1889,7 +1896,7 @@
                        
                default:
                        if (wide == true) {
-                               VERIFY_ERROR("illegal instruction following wide 
instruction");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"illegal instruction following wide instruction");
                        }
                }
                
@@ -1918,7 +1925,7 @@
                        newpc = pc;
                }
                else if (status[pc] & START_BLOCK) {
-                       VERIFY_ERROR("branch into middle of instruction");
+                       return verifyErrorInVerifyMethod3a(einfo, method, "branch into 
middle of instruction");
                }
        }
        
@@ -1931,10 +1938,10 @@
                        
                        pc = entry->handler_pc;
                        if (pc >= codelen) {
-                               VERIFY_ERROR("exception handler is beyond bound of 
method code");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"exception handler is beyond bound of method code");
                        }
                        else if (!(status[pc] & IS_INSTRUCTION)) {
-                               VERIFY_ERROR("exception handler starts in the middle 
of an instruction");
+                               return verifyErrorInVerifyMethod3a(einfo, method, 
"exception handler starts in the middle of an instruction");
                        }
                        
                        status[pc] |= (EXCEPTION_HANDLER & START_BLOCK);
@@ -1952,10 +1959,10 @@
                                        DBG(VERIFY3, dprintf("        ERROR: could not 
resolve catch type...\n"); );
                                        entry->catch_type = UNRESOLVABLE_CATCHTYPE;
                                        
-                                       VERIFY_ERROR("unresolvable catch type");
+                                       return verifyErrorInVerifyMethod3a(einfo, 
method, "unresolvable catch type");
                                }
                                if (!instanceof(javaLangThrowable, entry->catch_type)) 
{
-                                       VERIFY_ERROR("Exception to be handled by 
exception handler is not a subclass of Java/Lang/Throwable");
+                                       return verifyErrorInVerifyMethod3a(einfo, 
method, "Exception to be handled by exception handler is not a subclass of 
Java/Lang/Throwable");
                                }
                        }
                }

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

Reply via email to