PatchSet 6606
Date: 2005/06/01 20:14:50
Author: guilhem
Branch: HEAD
Tag: (none)
Log:
Reformatted stack trace output in Kaffe VM.
* kaffe/kaffevm/stackTrace.c
(printStackTrace): Reformatted trace output.
* kaffe/kaffevm/support.c
(kprintf): Use vfprintf stored in kaffe VM arguments.
* kaffe/kaffevm/jni/jni.c
(Kaffe_ExceptionDescribe): Always print the stack trace using
kaffe internal routines. That way we always get a stack trace when
an exception is thrown.
* test/regression/ProcessClassInst.java,
test/regression/ProcessClassStop.java: Fixed expected output
accordingly.
Members:
ChangeLog:1.4132-1.4133
kaffe/kaffevm/stackTrace.c:1.50-1.51
kaffe/kaffevm/support.c:1.84-1.85
kaffe/kaffevm/jni/jni.c:1.29-1.30
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4132 kaffe/ChangeLog:1.4133
--- kaffe/ChangeLog:1.4132 Tue May 31 21:18:31 2005
+++ kaffe/ChangeLog Wed Jun 1 20:14:50 2005
@@ -1,3 +1,20 @@
+2005-06-01 Guilhem Lavaux [EMAIL PROTECTED]
+
+ * kaffe/kaffevm/stackTrace.c
+ (printStackTrace): Reformatted trace output.
+
+ * kaffe/kaffevm/support.c
+ (kprintf): Use vfprintf stored in kaffe VM arguments.
+
+ * kaffe/kaffevm/jni/jni.c
+ (Kaffe_ExceptionDescribe): Always print the stack trace using
+ kaffe internal routines. That way we always get a stack trace when
+ an exception is thrown.
+
+ * test/regression/ProcessClassInst.java,
+ test/regression/ProcessClassStop.java: Fixed expected output
+ accordingly.
+
2005-05-31 Adam Heath [EMAIL PROTECTED]
* kaffe/kaffevm/jni/jni.c,
Index: kaffe/kaffe/kaffevm/stackTrace.c
diff -u kaffe/kaffe/kaffevm/stackTrace.c:1.50
kaffe/kaffe/kaffevm/stackTrace.c:1.51
--- kaffe/kaffe/kaffevm/stackTrace.c:1.50 Sat May 28 13:41:52 2005
+++ kaffe/kaffe/kaffevm/stackTrace.cWed Jun 1 20:14:52 2005
@@ -262,13 +262,13 @@
if (linenr == -1) {
if (meth-accflags ACC_NATIVE) {
- sprintf(buf, \tat %s.%s(%s:native),
+ sprintf(buf,at %s.%s (%s:native),
class_dot_name,
meth-name-data,
CLASS_SOURCEFILE(meth-class));
}
else {
- sprintf(buf, \tat %s.%s(%s:line
unknown, pc %p),
+ sprintf(buf,at %s.%s (%s:line
unknown, pc %p),
class_dot_name,
meth-name-data,
CLASS_SOURCEFILE(meth-class),
@@ -276,7 +276,7 @@
}
}
else {
- sprintf(buf, \tat %s.%s(%s:%d),
+ sprintf(buf,at %s.%s (%s:%d),
class_dot_name,
meth-name-data,
CLASS_SOURCEFILE(meth-class),
Index: kaffe/kaffe/kaffevm/support.c
diff -u kaffe/kaffe/kaffevm/support.c:1.84 kaffe/kaffe/kaffevm/support.c:1.85
--- kaffe/kaffe/kaffevm/support.c:1.84 Sat May 14 21:46:31 2005
+++ kaffe/kaffe/kaffevm/support.c Wed Jun 1 20:14:52 2005
@@ -942,7 +942,7 @@
va_list argptr;
va_start(argptr, mess);
- vfprintf(out, mess, argptr);
+ Kaffe_JavaVMArgs.vfprintf(out, mess, argptr);
va_end(argptr);
}
Index: kaffe/kaffe/kaffevm/jni/jni.c
diff -u kaffe/kaffe/kaffevm/jni/jni.c:1.29 kaffe/kaffe/kaffevm/jni/jni.c:1.30
--- kaffe/kaffe/kaffevm/jni/jni.c:1.29 Tue May 31 21:18:29 2005
+++ kaffe/kaffe/kaffevm/jni/jni.c Wed Jun 1 20:14:54 2005
@@ -472,10 +472,35 @@
Kaffe_ExceptionDescribe(JNIEnv* env UNUSED)
{
BEGIN_EXCEPTION_HANDLING_VOID();
+ const char* cname;
+ Hjava_lang_Class* class;
+ Hjava_lang_Throwable *eobj = thread_data-exceptObj;
- if (thread_data-exceptObj != 0) {
- do_execute_java_method(NULL, thread_data-exceptObj,
printStackTrace, ()V,
- NULL, 0, thread_data-exceptObj);
+ if (eobj != 0) {
+ /* Don't use the java stack printer because the exception
+* may arise in the IO codec.
+*/
+ Hjava_lang_String *msg;
+ char *realname;
+
+ class = OBJECT_CLASS(eobj-base);
+ cname = CLASS_CNAME(class);
+ realname = KMALLOC(strlen(cname));
+ pathname2classname(cname, realname);
+
+ msg =