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.c    Wed 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 = unhand(eobj)->detailMessage;
+              if (msg != NULL) {
+                      char *cmsg = checkPtr(stringJava2C(msg));
+
+                      kprintf(stderr, "%s: %s\n", realname, cmsg);
+                      KFREE(cmsg);
+                      unhand(eobj)->detailMessage = NULL;
+              } else {
+                      kprintf(stderr, "%s\n", realname);
+              }
+                      KFREE(realname);
+              
+              printStackTrace (eobj, NULL, true);
        }
        END_EXCEPTION_HANDLING();
 }

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

Reply via email to