PatchSet 4440 
Date: 2004/02/16 23:12:51
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Replaced macro by static inline function

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

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

Members: 
        ChangeLog:1.2023->1.2024 
        kaffe/kaffevm/verify.c:1.56->1.57 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2023 kaffe/ChangeLog:1.2024
--- kaffe/ChangeLog:1.2023      Mon Feb 16 21:59:37 2004
+++ kaffe/ChangeLog     Mon Feb 16 23:12:51 2004
@@ -1,6 +1,13 @@
 2004-02-16  Dalibor Topic <[EMAIL PROTECTED]>
 
         * kaffe/kaffevm/verify.c
+        (verifyErrorInCheckMethodCall): New static inline function.
+        (VERIFY_ERROR) Removed.
+        Replaced use of VERIFY_ERROR by verifyErrorInCheckMethodCall.
+
+2004-02-16  Dalibor Topic <[EMAIL PROTECTED]>
+
+        * kaffe/kaffevm/verify.c
         (opstackPopNBlind): New static inline function.
         (OPSTACK_POP_N_BLIND) Removed.
         Replaced use of OPSTACK_POP_N_BLIND by opstackPopNBlind.
Index: kaffe/kaffe/kaffevm/verify.c
diff -u kaffe/kaffe/kaffevm/verify.c:1.56 kaffe/kaffe/kaffevm/verify.c:1.57
--- kaffe/kaffe/kaffevm/verify.c:1.56   Mon Feb 16 21:59:38 2004
+++ kaffe/kaffe/kaffevm/verify.c        Mon Feb 16 23:12:55 2004
@@ -4051,6 +4051,36 @@
        return count;
 }
 
+/*
+ * Helper function for error reporting in checkMethodCall.
+ */
+static inline
+bool
+verifyErrorInCheckMethodCall(errorInfo* einfo,
+                            const Method* method,
+                            char* argbuf,
+                            uint32 pc,
+                            const uint32 idx,
+                            const constants* pool,
+                            const char* methSig,
+                            const char* msg)
+{
+       KFREE(argbuf);
+       DBG(VERIFY3,
+           dprintf("                error with method invocation, pc = %d, method = 
%s%s\n",
+                   pc,
+                   METHODREF_NAMED(idx, pool),
+                   methSig);
+           );
+       if (einfo->type == 0) {
+               postExceptionMessage(einfo, JAVA_LANG(VerifyError),
+                                    "in method \"%s.%s\": %s",
+                                    CLASS_CNAME(method->class),
+                                    METHOD_NAMED(method),
+                                    msg);
+       }
+       return(false);
+}
 
 /* 
  * checkMethodCall()
@@ -4071,18 +4101,7 @@
                BlockInfo* binfo, uint32 pc,
                SigStack** sigs, UninitializedType** uninits)
 {
-#define VERIFY_ERROR(_MSG) \
-       KFREE(argbuf); \
-       DBG(VERIFY3, dprintf("                error with method invocation, pc = %d, 
method = %s%s\n", \
-                            pc, METHODREF_NAMED(idx, pool), methSig); ); \
-       if (einfo->type == 0) { \
-               postExceptionMessage(einfo, JAVA_LANG(VerifyError), \
-                                    "in method \"%s.%s\": %s", \
-                                    CLASS_CNAME(method->class), METHOD_NAMED(method), 
_MSG); \
-       } \
-       return(false)
-       
-#define TYPE_ERROR VERIFY_ERROR("parameters fail type checking in method invocation")
+#define TYPE_ERROR return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, 
idx, pool, methSig, "parameters fail type checking in method invocation")
        
        const unsigned char* code        = METHOD_BYTECODE_CODE(method);
        const uint32 opcode              = code[pc];
@@ -4108,20 +4127,20 @@
        
        
        if (nargs > binfo->stacksz) {
-               VERIFY_ERROR("not enough stuff on opstack for method invocation");
+               return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, idx, 
pool, methSig, "not enough stuff on opstack for method invocation");
        }
        
        
        /* make sure that the receiver is type compatible with the class being invoked 
*/
        if (opcode != INVOKESTATIC) {
                if (nargs == binfo->stacksz) {
-                       VERIFY_ERROR("not enough stuff on opstack for method 
invocation");
+                       return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, 
idx, pool, methSig, "not enough stuff on opstack for method invocation");
                }
                
                
                receiver = &binfo->opstack[binfo->stacksz - (nargs + 1)];
                if (!(receiver->tinfo & TINFO_UNINIT) && !isReference(receiver)) {
-                       VERIFY_ERROR("invoking a method on something that is not a 
reference");
+                       return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, 
idx, pool, methSig, "invoking a method on something that is not a reference");
                }
                
                if (pool->tags[classIdx] == CONSTANT_Class) {
@@ -4145,13 +4164,13 @@
                                        if (!sameType(methodRefClass, &uninit->type) &&
                                            uninit->type.data.class != 
TOBJ->data.class &&
                                            !sameType(methodRefClass, &t)) {
-                                               VERIFY_ERROR("incompatible receiving 
type for superclass constructor call");
+                                               return 
verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, idx, pool, methSig, 
"incompatible receiving type for superclass constructor call");
                                        }
                                } else if (!sameType(methodRefClass, &uninit->type)) {
                                        DBG(VERIFY3,
                                            dprintf("%smethodRefClass: ", indent); 
printType(methodRefClass);
                                            dprintf("\n%sreceiver: ", indent); 
printType(&uninit->type); dprintf("\n"); );
-                                       VERIFY_ERROR("incompatible receiving type for 
constructor call");
+                                       return verifyErrorInCheckMethodCall(einfo, 
method, argbuf, pc, idx, pool, methSig, "incompatible receiving type for constructor 
call");
                                }
                                
                                /* fix front of list, if necessary */
@@ -4166,12 +4185,12 @@
                                popUninit(method, uninit, binfo);
                        }
                        else if (!sameType(methodRefClass, receiver)) {
-                               VERIFY_ERROR("incompatible receiving type for 
constructor call");
+                               return verifyErrorInCheckMethodCall(einfo, method, 
argbuf, pc, idx, pool, methSig, "incompatible receiving type for constructor call");
                        }
                }
                else if (!typecheck(einfo, method->class, methodRefClass, receiver)) {
                        if (receiver->tinfo & TINFO_UNINIT) {
-                               VERIFY_ERROR("invoking a method on an uninitialized 
object reference");
+                               return verifyErrorInCheckMethodCall(einfo, method, 
argbuf, pc, idx, pool, methSig, "invoking a method on an uninitialized object 
reference");
                        }
                        
                        DBG(VERIFY3,
@@ -4181,7 +4200,7 @@
                            printType(receiver);
                            dprintf("\n");
                            );
-                       VERIFY_ERROR("expected method receiver does not typecheck with 
object on operand stack");
+                       return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, 
idx, pool, methSig, "expected method receiver does not typecheck with object on 
operand stack");
                }
        }
        
@@ -4196,7 +4215,7 @@
                
                if (paramIndex >= binfo->stacksz) {
                        KFREE(argbuf);
-                       VERIFY_ERROR("error: not enough parameters on stack for method 
invocation");
+                       return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, 
idx, pool, methSig, "error: not enough parameters on stack for method invocation");
                }
                
                
@@ -4277,12 +4296,12 @@
        
        if (*argbuf == 'J' || *argbuf == 'D') {
                if (method->stacksz < binfo->stacksz + 2) {
-                       VERIFY_ERROR("not enough room on operand stack for method 
call's return value");
+                       return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, 
idx, pool, methSig, "not enough room on operand stack for method call's return value");
                }
        }
        else if (*argbuf != 'V') {
                if (method->stacksz < binfo->stacksz + 1) {
-                       VERIFY_ERROR("not enough room on operand stack for method 
call's return value");
+                       return verifyErrorInCheckMethodCall(einfo, method, argbuf, pc, 
idx, pool, methSig, "not enough room on operand stack for method call's return value");
                }
        }
        

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

Reply via email to