* src/vm/jit/jit.h (jitdata): Added temporary fields for development
[cacao.git] / src / vm / method.c
index cd5bc7e4342a05d7938c6413931392f9c8d1a0e7..21ce34a06be4e8ac536e498cdcfae04882ac16f1 100644 (file)
@@ -32,7 +32,7 @@
             Edwin Steiner
             Christian Thalinger
 
-   $Id: method.c 4501 2006-02-13 18:55:55Z twisti $
+   $Id: method.c 4879 2006-05-05 17:34:49Z edwin $
 
 */
 
@@ -67,8 +67,7 @@ void method_free(methodinfo *m)
        if (m->exceptiontable)
                MFREE(m->exceptiontable, exceptiontable, m->exceptiontablelength);
 
-       if (m->mcode)
-               CFREE((void *) (ptrint) m->mcode, m->mcodelength);
+       code_free_code_of_method(m);
 
        if (m->stubroutine) {
                if (m->flags & ACC_NATIVE) {
@@ -128,7 +127,7 @@ methodinfo *method_vftbl_lookup(vftbl_t *vftbl, methodinfo* m)
        /* Get the method from the virtual function table.  Is this an
           interface method? */
 
-       if (m->flags & (ACC_INTERFACE | ACC_ABSTRACT)) {
+       if (m->class->flags & ACC_INTERFACE) {
                pmptr = vftbl->interfacetable[-(m->class->index)];
                mptr  = pmptr[(m - m->class->methods)];
 
@@ -189,10 +188,10 @@ void method_print(methodinfo *m)
                return;
        }
 
-       utf_display_classname(m->class->name);
+       utf_display_printable_ascii_classname(m->class->name);
        printf(".");
-       utf_display(m->name);
-       utf_display(m->descriptor);
+       utf_display_printable_ascii(m->name);
+       utf_display_printable_ascii(m->descriptor);
 
        method_printflags(m);
 }
@@ -216,6 +215,50 @@ void method_println(methodinfo *m)
 #endif /* !defined(NDEBUG) */
 
 
+/* method_methodref_print ******************************************************
+
+   Prints a method reference to stdout.
+
+*******************************************************************************/
+
+#if !defined(NDEBUG)
+void method_methodref_print(constant_FMIref *mr)
+{
+       if (!mr) {
+               printf("(constant_FMIref *)NULL");
+               return;
+       }
+
+       if (IS_FMIREF_RESOLVED(mr)) {
+               printf("<method> ");
+               method_print(mr->p.method);
+       }
+       else {
+               printf("<methodref> ");
+               utf_display_printable_ascii_classname(mr->p.classref->name);
+               printf(".");
+               utf_display_printable_ascii(mr->name);
+               utf_display_printable_ascii(mr->descriptor);
+       }
+}
+#endif /* !defined(NDEBUG) */
+
+
+/* method_methodref_println ****************************************************
+
+   Prints a method reference to stdout, followed by a newline.
+
+*******************************************************************************/
+
+#if !defined(NDEBUG)
+void method_methodref_println(constant_FMIref *mr)
+{
+       method_methodref_print(mr);
+       printf("\n");
+}
+#endif /* !defined(NDEBUG) */
+
+
 /*
  * These are local overrides for various environment variables in Emacs.
  * Please do not remove this and leave it at the end of the file, where
@@ -227,4 +270,5 @@ void method_println(methodinfo *m)
  * c-basic-offset: 4
  * tab-width: 4
  * End:
+ * vim:noexpandtab:sw=4:ts=4:
  */