[kaffe] CVS kaffe (dalibor): Moved debugging code out of verify.c

Kaffe CVS Kaffe Mailing List <kaffe@kaffe.org>
Sat Feb 28 10:54:02 2004


PatchSet 4473 
Date: 2004/02/28 18:44:25
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Moved debugging code out of verify.c

2004-02-28  Dalibor Topic <robilad@kaffe.org>

        * kaffe/kaffevm/verify-debug.c,
        kaffe/kaffevm/verify-debug.h:
        New files.

        * include/errors.h,
        kaffe/kaffevm/verify.h:
        Added missing includes.

        * kaffe/kaffevm/verify.h
        (TUNSTABLE, TFLOAT, TLONG, TDOUBLE, TNULL, TOBJARR,
        TCHARARR, TBYTEARR, TBOOLARR, TSHORTARR, TINTARR,
        TLONGARR, TFLOATARR, TDOUBLEARR, isNull, isWide):
        Export symbols.

        * kaffe/kaffevm/verify.c:
        Include verify-debug.h.
        (TUNSTABLE, TFLOAT, TLONG, TDOUBLE, TNULL, TOBJARR,
        TCHARARR, TBYTEARR, TBOOLARR, TSHORTARR, TINTARR,
        TLONGARR, TFLOATARR, TDOUBLEARR, isNull, isWide):
        Export symbols.
        (printInstruction, printType, printBlock): Move to
        kaffe/kaffevm/verify-debug.c. Move prototypes to
        kaffe/kaffevm/verify-debug.h.

        * kaffe/kaffevm/Makefile.am
        (libkaffevm_la_SOURCES): Added verify-debug.c.
        (noinst_HEADERS): Added verify-debug.h.

        * kaffe/kaffevm/Makefile.in,
        libltdl/configure,
        libraries/javalib/Makefile.am,
        libraries/javalib/Makefile.in:
        Regenerated.

Members: 
	ChangeLog:1.2053->1.2054 
	include/errors.h:1.9->1.10 
	kaffe/kaffevm/Makefile.am:1.49->1.50 
	kaffe/kaffevm/Makefile.in:1.132->1.133 
	kaffe/kaffevm/verify-debug.c:INITIAL->1.1 
	kaffe/kaffevm/verify-debug.h:INITIAL->1.1 
	kaffe/kaffevm/verify.c:1.65->1.66 
	kaffe/kaffevm/verify.h:1.6->1.7 
	libltdl/configure:1.51->1.52 
	libraries/javalib/Makefile.am:INITIAL->1.171 
	libraries/javalib/Makefile.in:INITIAL->1.228 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2053 kaffe/ChangeLog:1.2054
--- kaffe/ChangeLog:1.2053	Sat Feb 28 17:03:19 2004
+++ kaffe/ChangeLog	Sat Feb 28 18:44:25 2004
@@ -1,5 +1,41 @@
 2004-02-28  Dalibor Topic <robilad@kaffe.org>
 
+	* kaffe/kaffevm/verify-debug.c,
+	kaffe/kaffevm/verify-debug.h:
+	New files.
+
+	* include/errors.h,
+	kaffe/kaffevm/verify.h:
+	Added missing includes.
+
+	* kaffe/kaffevm/verify.h
+	(TUNSTABLE, TFLOAT, TLONG, TDOUBLE, TNULL, TOBJARR,
+	TCHARARR, TBYTEARR, TBOOLARR, TSHORTARR, TINTARR,
+	TLONGARR, TFLOATARR, TDOUBLEARR, isNull, isWide):
+	Export symbols.
+	
+	* kaffe/kaffevm/verify.c:
+	Include verify-debug.h.
+	(TUNSTABLE, TFLOAT, TLONG, TDOUBLE, TNULL, TOBJARR,
+        TCHARARR, TBYTEARR, TBOOLARR, TSHORTARR, TINTARR,
+        TLONGARR, TFLOATARR, TDOUBLEARR, isNull, isWide):
+        Export symbols.
+	(printInstruction, printType, printBlock): Move to 
+	kaffe/kaffevm/verify-debug.c. Move prototypes to
+	kaffe/kaffevm/verify-debug.h.
+
+	* kaffe/kaffevm/Makefile.am
+	(libkaffevm_la_SOURCES): Added verify-debug.c.
+	(noinst_HEADERS): Added verify-debug.h.
+
+	* kaffe/kaffevm/Makefile.in,
+	libltdl/configure,
+	libraries/javalib/Makefile.am,
+	libraries/javalib/Makefile.in:
+	Regenerated.
+
+2004-02-28  Dalibor Topic <robilad@kaffe.org>
+
         * kaffe/kaffevm/verify.c
         Use getIdx and getWIdx consistently.
 
Index: kaffe/include/errors.h
diff -u kaffe/include/errors.h:1.9 kaffe/include/errors.h:1.10
--- kaffe/include/errors.h:1.9	Sun Aug 31 22:08:58 2003
+++ kaffe/include/errors.h	Sat Feb 28 18:44:27 2004
@@ -12,6 +12,7 @@
 #ifndef __errors_h
 #define __errors_h
 
+#include "config-std.h"
 #include <stdarg.h>
 
 #define KERR_EXCEPTION			0x0001
Index: kaffe/kaffe/kaffevm/Makefile.am
diff -u kaffe/kaffe/kaffevm/Makefile.am:1.49 kaffe/kaffe/kaffevm/Makefile.am:1.50
--- kaffe/kaffe/kaffevm/Makefile.am:1.49	Thu Jan 15 02:29:30 2004
+++ kaffe/kaffe/kaffevm/Makefile.am	Sat Feb 28 18:44:27 2004
@@ -92,7 +92,8 @@
 	utf8const.c \
 	gcFuncs.c \
 	gcRefs.c \
-	verify.c
+	verify.c \
+	verify-debug.c
 
 noinst_HEADERS = \
 	access.h \
@@ -134,7 +135,8 @@
 	thread.h \
 	threadData.h \
 	utf8const.h \
-	verify.h
+	verify.h \
+	verify-debug.h
 
 gc-mem.c: stamp-h01
 	@if test ! -f $@; then rm -f stamp-h01; $(MAKE) stamp-h01; \
Index: kaffe/kaffe/kaffevm/Makefile.in
diff -u kaffe/kaffe/kaffevm/Makefile.in:1.132 kaffe/kaffe/kaffevm/Makefile.in:1.133
--- kaffe/kaffe/kaffevm/Makefile.in:1.132	Mon Feb  2 16:26:14 2004
+++ kaffe/kaffe/kaffevm/Makefile.in	Sat Feb 28 18:44:27 2004
@@ -79,7 +79,8 @@
 	fp.lo gc.lo hashtab.lo inflate.lo itypes.lo jar.lo jni.lo \
 	locks.lo lookup.lo object.lo readClass.lo sha-1.lo soft.lo \
 	stackTrace.lo stats.lo string.lo stringParsing.lo support.lo \
-	thread.lo utf8const.lo gcFuncs.lo gcRefs.lo verify.lo
+	thread.lo utf8const.lo gcFuncs.lo gcRefs.lo verify.lo \
+	verify-debug.lo
 am__objects_1 = gc-mem.lo md.lo
 nodist_libkaffevm_la_OBJECTS = $(am__objects_1)
 libkaffevm_la_OBJECTS = $(am_libkaffevm_la_OBJECTS) \
@@ -107,7 +108,9 @@
 @AMDEP_TRUE@	./$(DEPDIR)/stats.Plo ./$(DEPDIR)/string.Plo \
 @AMDEP_TRUE@	./$(DEPDIR)/stringParsing.Plo \
 @AMDEP_TRUE@	./$(DEPDIR)/support.Plo ./$(DEPDIR)/thread.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/utf8const.Plo ./$(DEPDIR)/verify.Plo
+@AMDEP_TRUE@	./$(DEPDIR)/utf8const.Plo \
+@AMDEP_TRUE@	./$(DEPDIR)/verify-debug.Plo \
+@AMDEP_TRUE@	./$(DEPDIR)/verify.Plo
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
@@ -431,7 +434,8 @@
 	utf8const.c \
 	gcFuncs.c \
 	gcRefs.c \
-	verify.c
+	verify.c \
+	verify-debug.c
 
 noinst_HEADERS = \
 	access.h \
@@ -473,7 +477,8 @@
 	thread.h \
 	threadData.h \
 	utf8const.h \
-	verify.h
+	verify.h \
+	verify-debug.h
 
 CLEANFILES = so_locations
 DISTCLEANFILES = gc-mem.c md.c stamp-h01 stamp-h02
@@ -582,6 +587,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/support.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8const.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verify-debug.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verify.Plo@am__quote@
 
 .c.o:
===================================================================
Checking out kaffe/kaffe/kaffevm/verify-debug.c
RCS:  /home/cvs/kaffe/kaffe/kaffe/kaffevm/verify-debug.c,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/kaffe/kaffevm/verify-debug.c	Sat Feb 28 18:47:48 2004
@@ -0,0 +1,429 @@
+/*
+ * verify-debug.c
+ *
+ * Copyright 2004
+ *   Kaffe.org contributors. See ChangeLog for details. All rights reserved.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file.
+ *
+ * Debugging code for the verifier.
+ */
+
+#include "debug.h"
+#include "verify.h"
+
+/* for debugging */
+#if !(defined(NDEBUG) || !defined(KAFFE_VMDEBUG))
+
+/*
+ * printInstruction()
+ *     prints out a string representation of the instruction.
+ *
+ *     TODO: print out extra information with the instruction.
+ */
+void
+printInstruction(const int opcode)
+{
+#define PRINT(_OP) dprintf("%s", _OP); return;
+	
+	switch(opcode) {
+	case 0: PRINT("NOP");
+		
+	case 1: PRINT("ACONST-null");
+		
+	case 2:   PRINT("ICONST_M1");
+	case 3:   PRINT("ICONST_0");
+	case 4:   PRINT("ICONST_1");
+	case 5:   PRINT("ICONST_2");
+	case 6:   PRINT("ICONST_3");
+	case 7:   PRINT("ICONST_4");
+	case 8:   PRINT("ICONST_5");
+		
+	case 9:   PRINT("LCONST_0");
+	case 10:  PRINT("LCONST_1");
+		
+	case 11:  PRINT("FCONST_0");
+	case 12:  PRINT("FCONST_1");
+	case 13:  PRINT("FCONST_2");
+		
+	case 14:  PRINT("DCONST_0");
+	case 15:  PRINT("DCONST_1");
+		
+	case 16:  PRINT("BIPUSH");
+	case 17:  PRINT("SIPUSH");
+		
+	case 18:  PRINT("LDC");
+	case 19:  PRINT("LDC_W");
+	case 20:  PRINT("LDC2_W");
+		
+	case 21:  PRINT("ILOAD");
+	case 22:  PRINT("LLOAD");
+	case 23:  PRINT("FLOAD");
+	case 24:  PRINT("DLOAD");
+	case 25:  PRINT("ALOAD");
+		
+	case 26:  PRINT("ILOAD_0");
+	case 27:  PRINT("ILOAD_1");
+	case 28:  PRINT("ILOAD_2");
+	case 29:  PRINT("ILOAD_3");
+		
+	case 30:  PRINT("LLOAD_0");
+	case 31:  PRINT("LLOAD_1");
+	case 32:  PRINT("LLOAD_2");
+	case 33:  PRINT("LLOAD_3");
+		
+	case 34:  PRINT("FLOAD_0");
+	case 35:  PRINT("FLOAD_1");
+	case 36:  PRINT("FLOAD_2");
+	case 37:  PRINT("FLOAD_3");
+		
+	case 38:  PRINT("DLOAD_0");
+	case 39:  PRINT("DLOAD_1");
+	case 40:  PRINT("DLOAD_2");
+	case 41:  PRINT("DLOAD_3");
+		
+	case 42:  PRINT("ALOAD_0");
+	case 43:  PRINT("ALOAD_1");
+	case 44:  PRINT("ALOAD_2");
+	case 45:  PRINT("ALOAD_3");
+		
+	case 46:  PRINT("IALOAD");
+	case 47:  PRINT("LALOAD");
+	case 48:  PRINT("FALOAD");
+	case 49:  PRINT("DALOAD");
+	case 50:  PRINT("AALOAD");
+	case 51:  PRINT("BALOAD");
+	case 52:  PRINT("CALOAD");
+	case 53:  PRINT("SALOAD");
+		
+	case 54:  PRINT("ISTORE");
+	case 55:  PRINT("LSTORE");
+	case 56:  PRINT("FSTORE");
+	case 57:  PRINT("DSTORE");
+	case 58:  PRINT("ASTORE");
+		
+	case 59:  PRINT("ISTORE_0");
+	case 60:  PRINT("ISTORE_1");
+	case 61:  PRINT("ISTORE_2");
+	case 62:  PRINT("ISTORE_3");
+		
+	case 63:  PRINT("LSTORE_0");
+	case 64:  PRINT("LSTORE_1");
+	case 65:  PRINT("LSTORE_2");
+	case 66:  PRINT("LSTORE_3");
+		
+	case 67:  PRINT("FSTORE_0");
+	case 68:  PRINT("FSTORE_1");
+	case 69:  PRINT("FSTORE_2");
+	case 70:  PRINT("FSTORE_3");
+		
+	case 71:  PRINT("DSTORE_0");
+	case 72:  PRINT("DSTORE_1");
+	case 73:  PRINT("DSTORE_2");
+	case 74:  PRINT("DSTORE_3");
+		
+	case 75:  PRINT("ASTORE_0");
+	case 76:  PRINT("ASTORE_1");
+	case 77:  PRINT("ASTORE_2");
+	case 78:  PRINT("ASTORE_3");
+		
+	case 79:  PRINT("IASTORE");
+	case 80:  PRINT("LASTORE");
+	case 81:  PRINT("FASTORE");
+	case 82:  PRINT("DASTORE");
+	case 83:  PRINT("AASTORE");
+	case 84:  PRINT("BASTORE");
+	case 85:  PRINT("CASTORE");
+	case 86:  PRINT("SASTORE");
+		
+	case 87:  PRINT("POP");
+	case 88:  PRINT("POP_W");
+		
+	case 89:  PRINT("DUP");
+	case 90:  PRINT("DUP_X1");
+	case 91:  PRINT("DUP_X2");
+	case 92:  PRINT("DUP2");
+	case 93:  PRINT("DUP2_X1");
+	case 94:  PRINT("DUP2_X2");
+		
+	case 95:  PRINT("SWAP");
+		
+	case 96:  PRINT("IADD");
+	case 97:  PRINT("LADD");
+	case 98:  PRINT("FADD");
+	case 99:  PRINT("DADD");
+		
+	case 100: PRINT("ISUB");
+	case 101: PRINT("LSUB");
+	case 102: PRINT("FSUB");
+	case 103: PRINT("DSUB");
+		
+	case 104: PRINT("IMUL");
+	case 105: PRINT("LMUL");
+	case 106: PRINT("FMUL");
+	case 107: PRINT("DMUL");
+		
+	case 108: PRINT("IDIV");
+	case 109: PRINT("LDIV");
+	case 110: PRINT("FDIV");
+	case 111: PRINT("DDIV");
+		
+	case 112: PRINT("IREM");
+	case 113: PRINT("LREM");
+	case 114: PRINT("FREM");
+	case 115: PRINT("DREM");
+		
+	case 116: PRINT("INEG");
+	case 117: PRINT("LNEG");
+	case 118: PRINT("FNEG");
+	case 119: PRINT("DNEG");
+		
+	case 120: PRINT("ISHL");
+	case 121: PRINT("LSHL");
+	case 122: PRINT("FSHL");
+	case 123: PRINT("DSHL");
+		
+	case 124: PRINT("IUSHR");
+	case 125: PRINT("LUSHR");
+		
+	case 126: PRINT("IAND");
+	case 127: PRINT("LAND");
+		
+	case 128: PRINT("IOR");
+	case 129: PRINT("LOR");
+		
+	case 130: PRINT("IXOR");
+	case 131: PRINT("LXOR");
+		
+	case 132: PRINT("IINC");
+		
+	case 133: PRINT("I2L");
+	case 134: PRINT("I2F");
+	case 135: PRINT("I2D");
+	case 136: PRINT("L2I");
+	case 137: PRINT("L2F");
+	case 138: PRINT("L2D");
+	case 139: PRINT("F2I");
+	case 140: PRINT("F2L");
+	case 141: PRINT("F2D");
+	case 142: PRINT("D2I");
+	case 143: PRINT("D2L");
+	case 144: PRINT("D2F");
+	case 145: PRINT("I2B");
+	case 146: PRINT("I2C");
+	case 147: PRINT("I2S");
+		
+	case 148: PRINT("LCMP");
+	case 149: PRINT("FCMPL");
+	case 150: PRINT("FCMPG");
+	case 151: PRINT("DCMPL");
+	case 152: PRINT("DCMPG");
+		
+	case 153: PRINT("IFEQ");
+	case 154: PRINT("IFNE");
+	case 155: PRINT("IFLT");
+	case 156: PRINT("IFGE");
+	case 157: PRINT("IFGT");
+	case 158: PRINT("IFLE");
+		
+	case 159: PRINT("IF_ICMPEQ");
+	case 160: PRINT("IF_ICMPNE");
+	case 161: PRINT("IF_ICMPLT");
+	case 162: PRINT("IF_ICMPGE");
+	case 163: PRINT("IF_ICMPGT");
+	case 164: PRINT("IF_ICMPLE");
+	case 165: PRINT("IF_ACMPEQ");
+	case 166: PRINT("IF_ACMPNE");
+		
+	case 167: PRINT("GOTO");
+		
+	case 168: PRINT("JSR");
+	case 169: PRINT("RET");
+		
+	case 170: PRINT("TABLESWITCH");
+	case 171: PRINT("LOOKUPSWITCH");
+		
+	case 172: PRINT("IRETURN");
+	case 173: PRINT("LRETURN");
+	case 174: PRINT("FRETURN");
+	case 175: PRINT("DRETURN");
+	case 176: PRINT("ARETURN");
+	case 177: PRINT("RETURN");
+		
+	case 178: PRINT("GETSTATIC");
+	case 179: PRINT("PUTSTATIC");
+		
+	case 180: PRINT("GETFIELD");
+	case 181: PRINT("PUTFIELD");
+		
+	case 182: PRINT("INVOKEVIRTUAL");
+	case 183: PRINT("INVOKESPECIAL");
+	case 184: PRINT("INVOKESTATIC");
+	case 185: PRINT("INVOKEINTERFACE");
+		
+	case 187: PRINT("NEW");
+		
+	case 188: PRINT("NEWARRAY");
+	case 189: PRINT("ANEWARRAY");
+	case 190: PRINT("ARRAYLENGTH");
+		
+	case 191: PRINT("ATHROW");
+		
+	case 192: PRINT("CHECKCAST");
+	case 193: PRINT("INSTANCEOF");
+		
+	case 194: PRINT("MONITORENTER");
+	case 195: PRINT("MONITOREXIT");
+		
+	case 196: PRINT("WIDE");
+		
+	case 197: PRINT("MULTIANEWARRAY");
+		
+	case 198: PRINT("IFNULL");
+	case 199: PRINT("IFNONNULL");
+		
+	case 200: PRINT("GOTO_W");
+		
+	case 201: PRINT("JSR_W");
+		
+	case 202: PRINT("BREAKPOINT");
+		
+	case 254: PRINT("IMPDEP1");
+	case 255: PRINT("IMPDEP2");
+		
+	default:  PRINT("UNRECOGNIZED OPCODE");
+	}
+	
+#undef PRINT
+}
+void
+printType(const Type* t)
+{
+	const Hjava_lang_Class* type = t->data.class;
+	
+	dprintf("(%d)", t->tinfo);
+	switch(t->tinfo) {
+	case TINFO_SYSTEM:
+		if (type == TUNSTABLE->data.class) {
+			dprintf("TUNSTABLE");
+		}
+		else if (isWide(t)) {
+			dprintf("TWIDE");
+		}
+		else {
+			dprintf("UNKNOWN SYSTEM TYPE");
+		}
+		break;
+		
+	case TINFO_ADDR:
+		dprintf("TADDR: %d", t->data.addr);
+		break;
+		
+	case TINFO_PRIMITIVE:
+		if (type == TINT->data.class) {
+			dprintf("TINT");
+		}
+		else if (type == TLONG->data.class) {
+			dprintf("TLONG");
+		}
+		else if (type == TFLOAT->data.class) {
+			dprintf("TFLOAT");
+		}
+		else if (type == TDOUBLE->data.class) {
+			dprintf("TDOUBLE");
+		}
+		else {
+			dprintf("UKNOWN PRIMITIVE TYPE");
+		}
+		break;
+		
+	case TINFO_SIG:
+		dprintf("%s", t->data.sig);
+		break;
+		
+	case TINFO_NAME:
+		dprintf("%s", t->data.name);
+		break;
+		
+	case TINFO_CLASS:
+		if (type == NULL) {
+			dprintf("NULL");
+		}
+		else if (isNull(t)) {
+			dprintf("TNULL");
+		}
+		
+		else if (type == TCHARARR->data.class) {
+			dprintf("TCHARARR");
+		}
+		else if (type == TBOOLARR->data.class) {
+			dprintf("TBOOLARR");
+		}
+		else if (type == TBYTEARR->data.class) {
+			dprintf("TBYTEARR");
+		}
+		else if (type == TSHORTARR->data.class) {
+			dprintf("TSHORTARR");
+		}
+		else if (type == TINTARR->data.class) {
+			dprintf("TINTARR");
+		}
+		else if (type == TLONGARR->data.class) {
+			dprintf("TLONGARR");
+		}
+		else if (type == TFLOATARR->data.class) {
+			dprintf("TFLOATARR");
+		}
+		else if (type == TDOUBLEARR->data.class) {
+			dprintf("TDOUBLEARR");
+		}
+		else if (type == TOBJARR->data.class) {
+			dprintf("TOBJARR");
+		}
+		else {
+			if (type->name == NULL || CLASS_CNAME(type) == NULL) {
+				dprintf("<NULL NAME>");
+			} else {
+				dprintf("%s", CLASS_CNAME(type));
+			}
+		}
+		break;
+		
+	case TINFO_UNINIT:
+	case TINFO_UNINIT_SUPER:
+		printType(&(t->data.uninit->type));
+		break;
+		
+	default:
+		dprintf("UNRECOGNIZED TINFO");
+		break;
+	}
+}
+
+
+/*
+ * printBlock()
+ *    For debugging.  Prints out a basic block.
+ */
+void
+printBlock(const Method* method, const BlockInfo* binfo, const char* indent)
+{
+	uint32 n;
+	
+	dprintf("%slocals:\n", indent);
+	for (n = 0; n < method->localsz; n++) {
+		dprintf("%s    %d: ", indent, n);
+		printType(&binfo->locals[n]);
+		dprintf("\n");
+	}
+	dprintf("%sopstack (%d):\n", indent, binfo->stacksz);
+	for (n = 0; n < method->stacksz; n++) {
+		dprintf("%s    %d: ", indent, n);
+		printType(&binfo->opstack[n]);
+		dprintf("\n");
+	}
+}
+
+
+#endif /* !(defined(NDEBUG) || !defined(KAFFE_VMDEBUG)) */
===================================================================
Checking out kaffe/kaffe/kaffevm/verify-debug.h
RCS:  /home/cvs/kaffe/kaffe/kaffe/kaffevm/verify-debug.h,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/kaffe/kaffevm/verify-debug.h	Sat Feb 28 18:47:49 2004
@@ -0,0 +1,17 @@
+/*
+ * verify-debug.h
+ *
+ * Copyright 2004
+ *   Kaffe.org contributors. See ChangeLog for details. All rights reserved.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file.
+ *
+ * Interface to the debugging code for the verifier.
+ */
+
+#ifdef KAFFE_VMDEBUG
+extern void printInstruction(const int opcode);
+extern void printType(const Type*);
+extern void printBlock(const Method* method, const BlockInfo* binfo, const char* indent);
+#endif
Index: kaffe/kaffe/kaffevm/verify.c
diff -u kaffe/kaffe/kaffevm/verify.c:1.65 kaffe/kaffe/kaffevm/verify.c:1.66
--- kaffe/kaffe/kaffevm/verify.c:1.65	Sat Feb 28 17:03:20 2004
+++ kaffe/kaffe/kaffevm/verify.c	Sat Feb 28 18:44:27 2004
@@ -35,7 +35,7 @@
 #include "soft.h"
 
 #include "verify.h"
-
+#include "verify-debug.h"
 
 /*
  * Returns whether the given class is "trusted" (i.e. does not require verification).
@@ -933,19 +933,19 @@
  * types for type checking (pass 3b)
  */
 static Type  verify_UNSTABLE;
-static Type* TUNSTABLE = &verify_UNSTABLE;
+Type* TUNSTABLE = &verify_UNSTABLE;
 
 static Type  verify_INT;
-static Type* TINT = &verify_INT;
+Type* TINT = &verify_INT;
        
 static Type  verify_FLOAT;
-static Type* TFLOAT = &verify_FLOAT;
+Type* TFLOAT = &verify_FLOAT;
        
 static Type  verify_LONG;
-static Type* TLONG = &verify_LONG;
+Type* TLONG = &verify_LONG;
        
 static Type  verify_DOUBLE;
-static Type* TDOUBLE = &verify_DOUBLE;
+Type* TDOUBLE = &verify_DOUBLE;
 
 /* used for the second space of LONGs and DOUBLEs
  * in local variables or on the operand stack
@@ -953,7 +953,6 @@
 static Type  _WIDE;
 static Type* TWIDE = &_WIDE;
 
-static inline
 bool
 isWide(const Type * tinfo)
 {
@@ -962,7 +961,7 @@
 
 static Type  verify_NULL;
 static Type* TNULL = &verify_NULL;
-static inline
+
 bool
 isNull(const Type * tinfo)
 {
@@ -971,59 +970,51 @@
 
 static const char* OBJECT_SIG  = "Ljava/lang/Object;";
 static Type  verify_OBJ;
-static Type* TOBJ = &verify_OBJ;
+Type* TOBJ = &verify_OBJ;
 
 static const char* OBJARR_SIG = "[Ljava/lang/Object;";
 static Type  verify_OBJARR;
-static Type* TOBJARR = &verify_OBJARR;
-
+Type* TOBJARR = &verify_OBJARR;
 
 static const char* STRING_SIG = "Ljava/lang/String;";
 static Type  verify_STRING;
 static Type* TSTRING = &verify_STRING;
 
-
 static const char* CHARARR_SIG = "[C";
 static Type  verify_CHARARR;
-static Type* TCHARARR = &verify_CHARARR;
+Type* TCHARARR = &verify_CHARARR;
 
 static const char* BYTEARR_SIG = "[B";
 static Type  verify_BYTEARR;
-static Type* TBYTEARR = &verify_BYTEARR;
+Type* TBYTEARR = &verify_BYTEARR;
 
 static const char* BOOLARR_SIG = "[Z";
 static Type  verify_BOOLARR;
-static Type* TBOOLARR = &verify_BOOLARR;
+Type* TBOOLARR = &verify_BOOLARR;
 
 static const char* SHORTARR_SIG = "[S";
 static Type  verify_SHORTARR;
-static Type* TSHORTARR = &verify_SHORTARR;
+Type* TSHORTARR = &verify_SHORTARR;
 
 static const char* INTARR_SIG = "[I";
 static Type  verify_INTARR;
-static Type* TINTARR = &verify_INTARR;
+Type* TINTARR = &verify_INTARR;
 
 static const char* LONGARR_SIG = "[J";
 static Type  verify_LONGARR;
-static Type* TLONGARR = &verify_LONGARR;
+Type* TLONGARR = &verify_LONGARR;
 
 static const char* FLOATARR_SIG = "[F";
 static Type  verify_FLOATARR;
-static Type* TFLOATARR = &verify_FLOATARR;
+Type* TFLOATARR = &verify_FLOATARR;
 
 static const char* DOUBLEARR_SIG = "[D";
 static Type  verify_DOUBLEARR;
-static Type* TDOUBLEARR = &verify_DOUBLEARR;
+Type* TDOUBLEARR = &verify_DOUBLEARR;
 
 /***********************************************************************************
  * Methods for Pass 3 Verification
  ***********************************************************************************/
-#ifdef KAFFE_VMDEBUG
-static void printInstruction(const int opcode);
-static void printType(const Type*);
-static void printBlock(const Method* method, const BlockInfo* binfo, const char* indent);
-#endif
-
 static BlockInfo*         createBlock(const Method* method);
 static void               copyBlockData(const Method* method, BlockInfo* fromBlock, BlockInfo* toBlock);
 static void               copyBlockState(const Method* method, BlockInfo* fromBlock, BlockInfo* toBlock);
@@ -5166,424 +5157,3 @@
 		uninits = tmp;
 	}
 }
-
-
-
-/* for debugging */
-#if !(defined(NDEBUG) || !defined(KAFFE_VMDEBUG))
-
-/*
- * printInstruction()
- *     prints out a string representation of the instruction.
- *
- *     TODO: print out extra information with the instruction.
- */
-static
-void
-printInstruction(const int opcode)
-{
-#define PRINT(_OP) dprintf("%s", _OP); return;
-	
-	switch(opcode) {
-	case 0: PRINT("NOP");
-		
-	case 1: PRINT("ACONST-null");
-		
-	case 2:   PRINT("ICONST_M1");
-	case 3:   PRINT("ICONST_0");
-	case 4:   PRINT("ICONST_1");
-	case 5:   PRINT("ICONST_2");
-	case 6:   PRINT("ICONST_3");
-	case 7:   PRINT("ICONST_4");
-	case 8:   PRINT("ICONST_5");
-		
-	case 9:   PRINT("LCONST_0");
-	case 10:  PRINT("LCONST_1");
-		
-	case 11:  PRINT("FCONST_0");
-	case 12:  PRINT("FCONST_1");
-	case 13:  PRINT("FCONST_2");
-		
-	case 14:  PRINT("DCONST_0");
-	case 15:  PRINT("DCONST_1");
-		
-	case 16:  PRINT("BIPUSH");
-	case 17:  PRINT("SIPUSH");
-		
-	case 18:  PRINT("LDC");
-	case 19:  PRINT("LDC_W");
-	case 20:  PRINT("LDC2_W");
-		
-	case 21:  PRINT("ILOAD");
-	case 22:  PRINT("LLOAD");
-	case 23:  PRINT("FLOAD");
-	case 24:  PRINT("DLOAD");
-	case 25:  PRINT("ALOAD");
-		
-	case 26:  PRINT("ILOAD_0");
-	case 27:  PRINT("ILOAD_1");
-	case 28:  PRINT("ILOAD_2");
-	case 29:  PRINT("ILOAD_3");
-		
-	case 30:  PRINT("LLOAD_0");
-	case 31:  PRINT("LLOAD_1");
-	case 32:  PRINT("LLOAD_2");
-	case 33:  PRINT("LLOAD_3");
-		
-	case 34:  PRINT("FLOAD_0");
-	case 35:  PRINT("FLOAD_1");
-	case 36:  PRINT("FLOAD_2");
-	case 37:  PRINT("FLOAD_3");
-		
-	case 38:  PRINT("DLOAD_0");
-	case 39:  PRINT("DLOAD_1");
-	case 40:  PRINT("DLOAD_2");
-	case 41:  PRINT("DLOAD_3");
-		
-	case 42:  PRINT("ALOAD_0");
-	case 43:  PRINT("ALOAD_1");
-	case 44:  PRINT("ALOAD_2");
-	case 45:  PRINT("ALOAD_3");
-		
-	case 46:  PRINT("IALOAD");
-	case 47:  PRINT("LALOAD");
-	case 48:  PRINT("FALOAD");
-	case 49:  PRINT("DALOAD");
-	case 50:  PRINT("AALOAD");
-	case 51:  PRINT("BALOAD");
-	case 52:  PRINT("CALOAD");
-	case 53:  PRINT("SALOAD");
-		
-	case 54:  PRINT("ISTORE");
-	case 55:  PRINT("LSTORE");
-	case 56:  PRINT("FSTORE");
-	case 57:  PRINT("DSTORE");
-	case 58:  PRINT("ASTORE");
-		
-	case 59:  PRINT("ISTORE_0");
-	case 60:  PRINT("ISTORE_1");
-	case 61:  PRINT("ISTORE_2");
-	case 62:  PRINT("ISTORE_3");
-		
-	case 63:  PRINT("LSTORE_0");
-	case 64:  PRINT("LSTORE_1");
-	case 65:  PRINT("LSTORE_2");
-	case 66:  PRINT("LSTORE_3");
-		
-	case 67:  PRINT("FSTORE_0");
-	case 68:  PRINT("FSTORE_1");
-	case 69:  PRINT("FSTORE_2");
-	case 70:  PRINT("FSTORE_3");
-		
-	case 71:  PRINT("DSTORE_0");
-	case 72:  PRINT("DSTORE_1");
-	case 73:  PRINT("DSTORE_2");
-	case 74:  PRINT("DSTORE_3");
-		
-	case 75:  PRINT("ASTORE_0");
-	case 76:  PRINT("ASTORE_1");
-	case 77:  PRINT("ASTORE_2");
-	case 78:  PRINT("ASTORE_3");
-		
-	case 79:  PRINT("IASTORE");
-	case 80:  PRINT("LASTORE");
-	case 81:  PRINT("FASTORE");
-	case 82:  PRINT("DASTORE");
-	case 83:  PRINT("AASTORE");
-	case 84:  PRINT("BASTORE");
-	case 85:  PRINT("CASTORE");
-	case 86:  PRINT("SASTORE");
-		
-	case 87:  PRINT("POP");
-	case 88:  PRINT("POP_W");
-		
-	case 89:  PRINT("DUP");
-	case 90:  PRINT("DUP_X1");
-	case 91:  PRINT("DUP_X2");
-	case 92:  PRINT("DUP2");
-	case 93:  PRINT("DUP2_X1");
-	case 94:  PRINT("DUP2_X2");
-		
-	case 95:  PRINT("SWAP");
-		
-	case 96:  PRINT("IADD");
-	case 97:  PRINT("LADD");
-	case 98:  PRINT("FADD");
-	case 99:  PRINT("DADD");
-		
-	case 100: PRINT("ISUB");
-	case 101: PRINT("LSUB");
-	case 102: PRINT("FSUB");
-	case 103: PRINT("DSUB");
-		
-	case 104: PRINT("IMUL");
-	case 105: PRINT("LMUL");
-	case 106: PRINT("FMUL");
-	case 107: PRINT("DMUL");
-		
-	case 108: PRINT("IDIV");
-	case 109: PRINT("LDIV");
-	case 110: PRINT("FDIV");
-	case 111: PRINT("DDIV");
-		
-	case 112: PRINT("IREM");
-	case 113: PRINT("LREM");
-	case 114: PRINT("FREM");
-	case 115: PRINT("DREM");
-		
-	case 116: PRINT("INEG");
-	case 117: PRINT("LNEG");
-	case 118: PRINT("FNEG");
-	case 119: PRINT("DNEG");
-		
-	case 120: PRINT("ISHL");
-	case 121: PRINT("LSHL");
-	case 122: PRINT("FSHL");
-	case 123: PRINT("DSHL");
-		
-	case 124: PRINT("IUSHR");
-	case 125: PRINT("LUSHR");
-		
-	case 126: PRINT("IAND");
-	case 127: PRINT("LAND");
-		
-	case 128: PRINT("IOR");
-	case 129: PRINT("LOR");
-		
-	case 130: PRINT("IXOR");
-	case 131: PRINT("LXOR");
-		
-	case 132: PRINT("IINC");
-		
-	case 133: PRINT("I2L");
-	case 134: PRINT("I2F");
-	case 135: PRINT("I2D");
-	case 136: PRINT("L2I");
-	case 137: PRINT("L2F");
-	case 138: PRINT("L2D");
-	case 139: PRINT("F2I");
-	case 140: PRINT("F2L");
-	case 141: PRINT("F2D");
-	case 142: PRINT("D2I");
-	case 143: PRINT("D2L");
-	case 144: PRINT("D2F");
-	case 145: PRINT("I2B");
-	case 146: PRINT("I2C");
-	case 147: PRINT("I2S");
-		
-	case 148: PRINT("LCMP");
-	case 149: PRINT("FCMPL");
-	case 150: PRINT("FCMPG");
-	case 151: PRINT("DCMPL");
-	case 152: PRINT("DCMPG");
-		
-	case 153: PRINT("IFEQ");
-	case 154: PRINT("IFNE");
-	case 155: PRINT("IFLT");
-	case 156: PRINT("IFGE");
-	case 157: PRINT("IFGT");
-	case 158: PRINT("IFLE");

*** Patch too long, truncated ***