* Merged executionstate branch.
[cacao.git] / contrib / vmlog / vmlog_cacao.c
index 57de7f2074c134eb4b6663b62568f2f785d67577..618153716c27f60875ea08ada493cd67504f14e2 100644 (file)
@@ -72,13 +72,24 @@ static void vmlog_cacao_do_log(vmlog_log_function fun,
 {
        char *name;
        int namelen;
+       char *cname;
+       int cnamelen;
 
        assert(m);
 
        if (!vmlog_global_log)
                return;
 
-       name = vmlog_concat4len(m->class->name->text,m->class->name->blength,
+       if (m->class) {
+               cname = m->class->name->text;
+               cnamelen = m->class->name->blength;
+       }
+       else {
+               cname = "<NULL>";
+               cnamelen = 6;
+       }
+
+       name = vmlog_concat4len(cname,cnamelen,
                                ".",1,
                                m->name->text,m->name->blength,
                                m->descriptor->text,m->descriptor->blength,
@@ -161,6 +172,19 @@ void vmlog_cacao_signl(const char *name)
                        name, strlen(name));
 }
 
+void vmlog_cacao_signl_type(int type)
+{
+       char message[20];
+
+       if (!vmlog_global_log)
+               return;
+
+       sprintf(message, "EXC %d", type);
+
+       vmlog_log_signl(vmlog_global_log,(void*) THREADOBJECT,
+                       message, strlen(message));
+}
+
 void vmlog_cacao_init_options(void)
 {
        vmlog_cacao_options = vmlog_opt_new();