[kaffe] CVS kaffe (dalibor): Replaced macro by static inline function
Kaffe CVS
Kaffe Mailing List <kaffe@kaffe.org>
Fri Feb 13 02:00:03 2004
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 <robilad@kaffe.org>
* 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 <robilad@kaffe.org>
+
+ * kaffe/kaffevm/verify.c
+ (verifyErrorInVerifyMethod3a): New static inline function.
+ (VERIFY_ERROR) Removed.
+ Replaced use of VERIFY_ERROR by verifyErrorInVerifyMethod3a.
+
2004-02-12 Dalibor Topic <robilad@kaffe.org>
* 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");
}
}
}