[kaffe] CVS kaffe (robilad): Added debug codes for ksem and
references and guarded all dprintf invocations
Kaffe CVS
cvs-commits at kaffe.org
Sun Jan 30 10:28:11 PST 2005
PatchSet 5952
Date: 2005/01/30 18:21:36
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Added debug codes for ksem and references and guarded all dprintf invocations
2005-01-29 Dalibor Topic <robilad at kaffe.org>
* kaffe/kaffevm/ksem.c: Include debug.h for dprintf.
* kaffe/kaffevm/debug.c
kaffe/kaffevm/debug.h:
Added debug identifiers for ksem and references.
* kaffe/kaffevm/baseClasses.c,
kaffe/kaffevm/gcFuncs.c,
kaffe/kaffevm/reference.c,
kaffe/kaffevm/thread.c,
kaffe/kaffevm/intrp/machine.c,
kaffe/kaffevm/jni/jni-base.c:
Added guards for dprintf invocations.
Reported by: Michael Franz <mvfranz at gmail.com>
Members:
ChangeLog:1.3491->1.3492
kaffe/kaffevm/baseClasses.c:1.58->1.59
kaffe/kaffevm/debug.c:1.60->1.61
kaffe/kaffevm/debug.h:1.39->1.40
kaffe/kaffevm/gcFuncs.c:1.64->1.65
kaffe/kaffevm/ksem.c:1.11->1.12
kaffe/kaffevm/reference.c:1.1->1.2
kaffe/kaffevm/thread.c:1.91->1.92
kaffe/kaffevm/intrp/machine.c:1.45->1.46
kaffe/kaffevm/jni/jni-base.c:1.12->1.13
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3491 kaffe/ChangeLog:1.3492
--- kaffe/ChangeLog:1.3491 Sun Jan 30 15:36:15 2005
+++ kaffe/ChangeLog Sun Jan 30 18:21:36 2005
@@ -1,5 +1,23 @@
2005-01-29 Dalibor Topic <robilad at kaffe.org>
+ * kaffe/kaffevm/ksem.c: Include debug.h for dprintf.
+
+ * kaffe/kaffevm/debug.c
+ kaffe/kaffevm/debug.h:
+ Added debug identifiers for ksem and references.
+
+ * kaffe/kaffevm/baseClasses.c,
+ kaffe/kaffevm/gcFuncs.c,
+ kaffe/kaffevm/reference.c,
+ kaffe/kaffevm/thread.c,
+ kaffe/kaffevm/intrp/machine.c,
+ kaffe/kaffevm/jni/jni-base.c:
+ Added guards for dprintf invocations.
+
+ Reported by: Michael Franz <mvfranz at gmail.com>
+
+2005-01-29 Dalibor Topic <robilad at kaffe.org>
+
* developers/autogen.sh:
Set locale to C tp avoid different locales interfering
with sorting of class lists.
Index: kaffe/kaffe/kaffevm/baseClasses.c
diff -u kaffe/kaffe/kaffevm/baseClasses.c:1.58 kaffe/kaffe/kaffevm/baseClasses.c:1.59
--- kaffe/kaffe/kaffevm/baseClasses.c:1.58 Sun Jan 30 12:42:40 2005
+++ kaffe/kaffe/kaffevm/baseClasses.c Sun Jan 30 18:21:38 2005
@@ -142,9 +142,11 @@
{
if( !enableXProfiling() )
{
- dprintf(
+ DBG(INIT,
+ dprintf(
"Unable to initialize cross "
"language profiling\n");
+ );
}
}
#endif
@@ -208,7 +210,7 @@
constructor_name && Code_name && LineNumberTable_name &&
LocalVariableTable_name && ConstantValue_name &&
Exceptions_name && SourceFile_name && InnerClasses_name)) {
- dprintf("not enough memory to run kaffe\n");
+ DBG(INIT, dprintf("not enough memory to run kaffe\n"); );
ABORT();
}
@@ -246,15 +248,19 @@
static void NONRETURNING
abortWithEarlyClassFailure(errorInfo* einfo)
{
+ DBG(INIT,
dprintf("\n"
"Failure loading and/or initializing a critical class.\n"
"This failure occured too early in the VM startup, and is\n"
"indicative of bug in the initialization, or a insufficient\n"
"stack space or heap space to complete initialization.\n");
+ );
/* XXX print einfo. */
+ DBG(INIT,
dprintf("*einfo: type=%d;\n\tclassname=`%s';\n\tmess=`%s'\n",
einfo->type, einfo->classname, einfo->mess);
+ );
EXIT(-1);
}
Index: kaffe/kaffe/kaffevm/debug.c
diff -u kaffe/kaffe/kaffevm/debug.c:1.60 kaffe/kaffe/kaffevm/debug.c:1.61
--- kaffe/kaffe/kaffevm/debug.c:1.60 Mon Dec 27 16:09:46 2004
+++ kaffe/kaffe/kaffevm/debug.c Sun Jan 30 18:21:38 2005
@@ -155,7 +155,10 @@
D(VERIFY2, "Debug verifier, pass 2...outputs constant pool."),
D(VERIFY3, "Debug verifier, pass 3...outputs walkthrough of data-flow analysis."),
D(VERIFY, "Debug verifier, passes 2 and 3...produces a TON of output."),
-
+
+ D(KSEM, "Debug semaphores."),
+ D(REFERENCE, "Debug references."),
+
/* you can define combinations too */
{ "lookup", DBG_MLOOKUP|DBG_ELOOKUP|DBG_FLOOKUP,
"Various lookup operations" },
Index: kaffe/kaffe/kaffevm/debug.h
diff -u kaffe/kaffe/kaffevm/debug.h:1.39 kaffe/kaffe/kaffevm/debug.h:1.40
--- kaffe/kaffe/kaffevm/debug.h:1.39 Sun Dec 19 06:25:07 2004
+++ kaffe/kaffe/kaffevm/debug.h Sun Jan 30 18:21:38 2005
@@ -114,6 +114,9 @@
# define DBG_VERIFY3 DBG_BIT(61)
# define DBG_VERIFY (DBG_VERIFY2 | DBG_VERIFY3)
+# define DBG_KSEM DBG_BIT(62)
+# define DBG_REFERENCE DBG_BIT(63)
+
# define DBG_ALL ((debugmask_t)(-1))
# define DBG_ANY DBG_ALL
Index: kaffe/kaffe/kaffevm/gcFuncs.c
diff -u kaffe/kaffe/kaffevm/gcFuncs.c:1.64 kaffe/kaffe/kaffevm/gcFuncs.c:1.65
--- kaffe/kaffe/kaffevm/gcFuncs.c:1.64 Sun Jan 30 12:42:40 2005
+++ kaffe/kaffe/kaffevm/gcFuncs.c Sun Jan 30 18:21:38 2005
@@ -89,8 +89,10 @@
#endif
if (Kaffe_JavaVMArgs.enableVerboseGC > 0 && clazz->name) {
- dprintf("<GC: unloading class `%s'>\n",
- CLASS_CNAME(clazz));
+ DBG(CLASSGC,
+ dprintf("<GC: unloading class `%s'>\n",
+ CLASS_CNAME(clazz));
+ );
}
/* destroy all fields */
Index: kaffe/kaffe/kaffevm/ksem.c
diff -u kaffe/kaffe/kaffevm/ksem.c:1.11 kaffe/kaffe/kaffevm/ksem.c:1.12
--- kaffe/kaffe/kaffevm/ksem.c:1.11 Sun Jan 30 12:42:41 2005
+++ kaffe/kaffe/kaffevm/ksem.c Sun Jan 30 18:21:38 2005
@@ -8,6 +8,7 @@
* of this file.
*/
+#include "debug.h"
#include "ksem.h"
#include "support.h"
@@ -51,7 +52,9 @@
if (timeout == 0)
timeout = NOTIMEOUT;
- dprintf("ksem_get sp=%p\n", &r);
+ DBG(KSEM,
+ dprintf("ksem_get sp=%p\n", &r);
+ );
KMUTEX(lock)(&sem->mux);
/* If no stored wakeups, then sleep. */
Index: kaffe/kaffe/kaffevm/reference.c
diff -u kaffe/kaffe/kaffevm/reference.c:1.1 kaffe/kaffe/kaffevm/reference.c:1.2
--- kaffe/kaffe/kaffevm/reference.c:1.1 Sun Jan 30 12:42:41 2005
+++ kaffe/kaffe/kaffevm/reference.c Sun Jan 30 18:21:38 2005
@@ -9,6 +9,7 @@
* of this file.
*/
+#include "debug.h"
#include "gtypes.h"
#include "hashtab.h"
#include "baseClasses.h"
@@ -105,8 +106,11 @@
if (referent_field == NULL)
{
dumpErrorInfo(&einfo);
- dprintf("Internal error: The java/lang/ref/Reference class does not have any 'referent' field.\n"
- "Aborting.\n");
+ DBG(REFERENCE,
+ dprintf("Internal error: The java/lang/ref/Reference class does not have any "
+ "'referent' field.\n"
+ "Aborting.\n");
+ );
ABORT();
}
@@ -179,9 +183,11 @@
}
else
{
- dprintf("Internal error: a reference without the enqueue method has been registered.");
-
- dprintf("Aborting.\n");
+ DBG(REFERENCE,
+ dprintf("Internal error: a reference without the enqueue method "
+ "has been registered.");
+ dprintf("Aborting.\n");
+ );
ABORT();
}
@@ -250,8 +256,10 @@
kobj->finalizer_call = referenceObjectFinalizer;
break;
default:
- dprintf("Internal error: invalid finalizer type %d for object %p.\n", fintype, obj);
- dprintf("Aborting.\n");
+ DBG(REFERENCE,
+ dprintf("Internal error: invalid finalizer type %d for object %p.\n", fintype, obj);
+ dprintf("Aborting.\n");
+ );
ABORT();
}
}
Index: kaffe/kaffe/kaffevm/thread.c
diff -u kaffe/kaffe/kaffevm/thread.c:1.91 kaffe/kaffe/kaffevm/thread.c:1.92
--- kaffe/kaffe/kaffevm/thread.c:1.91 Sun Jan 30 12:42:41 2005
+++ kaffe/kaffe/kaffevm/thread.c Sun Jan 30 18:21:38 2005
@@ -604,17 +604,21 @@
static void
dumpJavaThread(jthread_t thread, UNUSED void *p)
{
+DBG(VMTHREAD,
Hjava_lang_VMThread *tid = (Hjava_lang_VMThread *)KTHREAD(get_data)(thread)->jlThread;
dprintf("`%s' ", nameThread(tid));
KTHREAD(dumpthreadinfo)(thread);
dprintf("\n");
+);
}
static void
dumpThreads(void)
{
+DBG(VMTHREAD,
dprintf("Dumping live threads:\n");
KTHREAD(walkLiveThreads_r)(dumpJavaThread, NULL);
+);
}
/*
@@ -639,9 +643,12 @@
#if defined(JTHREAD_RESTORE_FD)
jthreadRestoreFD(2);
#endif
+
dumpLocks();
dumpThreads();
+DBG(VMTHREAD,
dprintf("Deadlock: all threads blocked on internal events\n");
+);
fflush(stderr);
ABORT();
}
Index: kaffe/kaffe/kaffevm/intrp/machine.c
diff -u kaffe/kaffe/kaffevm/intrp/machine.c:1.45 kaffe/kaffe/kaffevm/intrp/machine.c:1.46
--- kaffe/kaffe/kaffevm/intrp/machine.c:1.45 Sun Jan 30 12:42:41 2005
+++ kaffe/kaffe/kaffevm/intrp/machine.c Sun Jan 30 18:21:40 2005
@@ -110,8 +110,10 @@
/* implement stack overflow check */
if (KTHREAD(stackcheck)(thread_data->needOnStack) == false) {
if (thread_data->needOnStack == STACK_LOW) {
- dprintf(
+ CHDBG(
+ dprintf(
"Panic: unhandled StackOverflowError()\n");
+ );
ABORT();
}
@@ -268,7 +270,7 @@
switch (code[pc]) {
default:
- dprintf("Unknown bytecode %d\n", code[pc]);
+ CHDBG(dprintf("Unknown bytecode %d\n", code[pc]); );
throwException(NEW_LANG_EXCEPTION(VerifyError));
break;
#include "kaffe.def"
Index: kaffe/kaffe/kaffevm/jni/jni-base.c
diff -u kaffe/kaffe/kaffevm/jni/jni-base.c:1.12 kaffe/kaffe/kaffevm/jni/jni-base.c:1.13
--- kaffe/kaffe/kaffevm/jni/jni-base.c:1.12 Sun Jan 30 12:42:42 2005
+++ kaffe/kaffe/kaffevm/jni/jni-base.c Sun Jan 30 18:21:41 2005
@@ -15,6 +15,7 @@
#include "config.h"
#include "config-std.h"
#include "config-mem.h"
+#include "debug.h"
#include "jni.h"
#include "jnirefs.h"
#include "jni_i.h"
@@ -222,7 +223,9 @@
{
args->nativeStackSize = sz;
}
- dprintf("Setup stack size to %d\n", sz);
+ DBG(INIT,
+ dprintf("Setup stack size to %d\n", sz);
+ );
}
}
args->bootClasspath = bootClasspath;
More information about the kaffe
mailing list