X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fclass.h;h=52a82ea96d18214b4d4059a390544a4783eb1291;hb=da49fa899f1ba447e4ee376a87729e43fde8754c;hp=c9b1e470591a644d79ff847cb64022aed085c984;hpb=acee29e4b109264448330d3294e4139e75b3ed61;p=cacao.git diff --git a/src/vm/class.h b/src/vm/class.h index c9b1e4705..52a82ea96 100644 --- a/src/vm/class.h +++ b/src/vm/class.h @@ -28,7 +28,7 @@ Changes: - $Id: class.h 2743 2005-06-20 11:54:06Z edwin $ + $Id: class.h 3638 2005-11-08 17:21:11Z twisti $ */ @@ -41,7 +41,10 @@ typedef struct innerclassinfo innerclassinfo; typedef struct extra_classref extra_classref; + #include "config.h" +#include "vm/types.h" + #include "toolbox/list.h" #include "vm/global.h" #include "vm/utf8.h" @@ -51,6 +54,7 @@ typedef struct extra_classref extra_classref; #include "vm/tables.h" #include "vm/jit/inline/sets.h" + /* classinfo ******************************************************************/ struct classinfo { /* class structure */ @@ -159,7 +163,9 @@ extern classinfo *class_java_lang_Cloneable; extern classinfo *class_java_lang_SecurityManager; extern classinfo *class_java_lang_String; extern classinfo *class_java_lang_System; +extern classinfo *class_java_lang_Thread; extern classinfo *class_java_lang_ThreadGroup; +extern classinfo *class_java_lang_VMThread; extern classinfo *class_java_io_Serializable; @@ -169,10 +175,13 @@ 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_NoSuchMethodError; extern classinfo *class_java_lang_OutOfMemoryError; extern classinfo *class_java_lang_Exception; extern classinfo *class_java_lang_ClassNotFoundException; +extern classinfo *class_java_lang_IllegalArgumentException; +extern classinfo *class_java_lang_IllegalMonitorStateException; extern classinfo *class_java_lang_Void; @@ -186,6 +195,11 @@ extern classinfo *class_java_lang_Float; extern classinfo *class_java_lang_Double; +/* some runtime exception */ + +extern classinfo *class_java_lang_NullPointerException; + + /* some classes which may be used more often */ extern classinfo *class_java_lang_StackTraceElement; @@ -266,6 +280,32 @@ constant_classref *class_get_classref_multiarray_of(s4 dim,constant_classref *re /* return a classref for the component type of the given array type */ constant_classref *class_get_classref_component_of(constant_classref *ref); +/* get a class' field by name and descriptor */ +fieldinfo *class_findfield(classinfo *c, utf *name, utf *desc); + +/* search 'classinfo'-structure for a field with the specified name */ +fieldinfo *class_findfield_by_name(classinfo *c, utf *name); +s4 class_findfield_index_by_name(classinfo *c, utf *name); + +/* search class for a field */ +fieldinfo *class_resolvefield(classinfo *c, utf *name, utf *desc, classinfo *referer, bool except); + +/* search for a method with a specified name and descriptor */ +methodinfo *class_findmethod(classinfo *c, utf *name, utf *desc); +methodinfo *class_resolvemethod(classinfo *c, utf *name, utf *dest); +methodinfo *class_resolveclassmethod(classinfo *c, utf *name, utf *dest, classinfo *referer, bool except); +methodinfo *class_resolveinterfacemethod(classinfo *c, utf *name, utf *dest, classinfo *referer, bool except); + +/* 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); + +/* debug purposes */ +void class_showmethods(classinfo *c); +void class_showconstantpool(classinfo *c); + #endif /* _CLASS_H */