Changed x86_64 abi back to 8 float argument registers.
[cacao.git] / src / vm / loader.h
index ac745609894dc46e40168a61989eb0ed1856c9c8..6909bdae4656d4c424acfa7260d0077197655099 100644 (file)
@@ -1,9 +1,9 @@
-/* loader.h - class loader header
+/* vm/loader.h - class loader header
 
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-   R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser,
-   M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck,
-   P. Tomsich, J. Wenninger
+   Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+   R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+   C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+   Institut f. Computersprachen - TU Wien
 
    This file is part of CACAO.
 
@@ -26,7 +26,7 @@
 
    Authors: Reinhard Grafl
 
-   $Id: loader.h 1112 2004-05-31 15:47:20Z jowenn $
+   $Id: loader.h 1735 2004-12-07 14:33:27Z twisti $
 */
 
 
@@ -35,8 +35,8 @@
 
 #include <stdio.h>
 
-#ifdef USE_ZLIB
-#include "unzip.h"
+#if defined(USE_ZLIB)
+# include "vm/unzip.h"
 #endif
 
 
@@ -92,7 +92,7 @@ extern utf *utf_fillInStackTrace_desc;
 extern classinfo *pseudo_class_Arraystub;
 extern classinfo *pseudo_class_Null;
 extern classinfo *pseudo_class_New;
-extern vftbl *pseudo_class_Arraystub_vftbl;
+extern vftbl_t *pseudo_class_Arraystub_vftbl;
 
 extern utf *array_packagename;
 
@@ -171,13 +171,24 @@ int type_from_descriptor(classinfo **cls,char *utf_ptr,char *end_ptr,char **next
 /* (used by class_new, don't use directly) */
 void class_new_array(classinfo *c);
 
+#define LAZYLOADING(class) { \
+        if (!class->loaded) \
+            if (!class_load(class)) \
+                return 0; \
+        if (!class->linked) \
+            if (!class_link(class)) \
+                return 0; }
+
+
 classinfo *class_load(classinfo *c);
 classinfo *class_load_intern(classbuffer *cb);
 classinfo *class_link(classinfo *c);
+void class_free(classinfo *c);
 
 void field_display(fieldinfo *f);
 
 void method_display(methodinfo *m);
+void method_display_w_class(methodinfo *m);
 
 utf* clinit_desc();
 utf* clinit_name();
@@ -190,15 +201,16 @@ utf* clinit_name();
 
 typedef union classpath_info {
        struct {
-               int type;
+               s4                    type;
                union classpath_info *next;
-               char *filename;
-               int pathlen; } filepath;
-#ifdef USE_ZLIB
+               char                 *path;
+               s4                    pathlen;
+       } filepath;
+#if defined(USE_ZLIB)
        struct {
-               int type;
+               s4                    type;
                union classpath_info *next;
-               unzFile uf;
+               unzFile               uf;
        } archive;
 #endif 
 } classpath_info;