Authors: Christian Thalinger
- Changes:
-
- $Id: class.h 4388 2006-01-30 15:44:52Z twisti $
+ $Id: class.h 6085 2006-11-29 17:08:27Z twisti $
*/
/* forward typedefs ***********************************************************/
+typedef struct classinfo classinfo;
typedef struct innerclassinfo innerclassinfo;
typedef struct extra_classref extra_classref;
#include "native/include/java_lang_Class.h"
#include "toolbox/list.h"
+
+#if defined(ENABLE_JAVASE)
+# include "vm/annotation.h"
+#endif
+
#include "vm/field.h"
#include "vm/linker.h"
+#include "vm/method.h"
#include "vm/references.h"
#include "vm/utf8.h"
-#include "vm/jit/inline/sets.h"
/* class state defines ********************************************************/
innerclassinfo *innerclass;
utf *packagename; /* full name of the package */
- utf *sourcefile; /* classfile name containing this class */
+ utf *sourcefile; /* SourceFile attribute */
+#if defined(ENABLE_JAVASE)
+ utf *signature; /* Signature attribute */
+ s4 runtimevisibleannotationscount;
+ annotation_t *runtimevisibleannotations;
+#endif
java_objectheader *classloader; /* NULL for bootstrap classloader */
};
extern classinfo *class_java_lang_System;
extern classinfo *class_java_lang_Thread;
extern classinfo *class_java_lang_ThreadGroup;
+extern classinfo *class_java_lang_VMSystem;
extern classinfo *class_java_lang_VMThread;
extern classinfo *class_java_io_Serializable;
extern classinfo *class_java_lang_Throwable;
extern classinfo *class_java_lang_VMThrowable;
extern classinfo *class_java_lang_Error;
-extern classinfo *class_java_lang_NoClassDefFoundError;
+extern classinfo *class_java_lang_AbstractMethodError;
extern classinfo *class_java_lang_LinkageError;
+extern classinfo *class_java_lang_NoClassDefFoundError;
extern classinfo *class_java_lang_NoSuchMethodError;
extern classinfo *class_java_lang_OutOfMemoryError;
extern classinfo *class_java_lang_Exception;
+extern classinfo *class_java_lang_ClassCastException;
extern classinfo *class_java_lang_ClassNotFoundException;
extern classinfo *class_java_lang_IllegalArgumentException;
extern classinfo *class_java_lang_IllegalMonitorStateException;
methodinfo *class_resolveclassmethod(classinfo *c, utf *name, utf *dest, classinfo *referer, bool throwexception);
methodinfo *class_resolveinterfacemethod(classinfo *c, utf *name, utf *dest, classinfo *referer, bool throwexception);
-/* search for a method with specified name and arguments (returntype ignored) */
-methodinfo *class_findmethod_approx(classinfo *c, utf *name, utf *desc);
-methodinfo *class_resolvemethod_approx(classinfo *c, utf *name, utf *dest);
-
bool class_issubclass(classinfo *sub, classinfo *super);
/* some debugging functions */
void class_printflags(classinfo *c);
void class_print(classinfo *c);
void class_println(classinfo *c);
+void class_classref_print(constant_classref *cr);
+void class_classref_println(constant_classref *cr);
+void class_classref_or_classinfo_print(classref_or_classinfo c);
+void class_classref_or_classinfo_println(classref_or_classinfo c);
#endif
/* debug purposes */