From: twisti Date: Wed, 6 Jun 2007 17:23:42 +0000 (+0000) Subject: * src/vmcore/class.c (class_is_primitive): New function. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=adc4be09d843f77fbbb496f4040404d88d97c98f;p=cacao.git * src/vmcore/class.c (class_is_primitive): New function. * src/vmcore/class.h (class_is_primitive): Added. * src/native/vm/java_lang_Class.c (isPrimitive): Use class_is_primitive. (getDeclaringClass): Likewise. (getDeclaredClasses): Likewise. --- diff --git a/src/native/vm/java_lang_Class.c b/src/native/vm/java_lang_Class.c index de3882973..b85254ca0 100644 --- a/src/native/vm/java_lang_Class.c +++ b/src/native/vm/java_lang_Class.c @@ -61,11 +61,11 @@ #include "vm/exceptions.h" #include "vm/global.h" #include "vm/initialize.h" +#include "vm/resolve.h" #include "vm/stringlocal.h" #include "vmcore/class.h" #include "vmcore/loader.h" -#include "vm/resolve.h" /* @@ -269,17 +269,13 @@ s4 _Jv_java_lang_Class_isInterface(java_lang_Class *klass) s4 _Jv_java_lang_Class_isPrimitive(java_lang_Class *klass) { classinfo *c; - s4 i; + bool result; c = (classinfo *) klass; - /* search table of primitive classes */ + result = class_is_primitive(c); - for (i = 0; i < PRIMITIVETYPE_COUNT; i++) - if (primitivetype_table[i].class_primitive == c) - return true; - - return false; + return result; } @@ -447,7 +443,7 @@ java_lang_Class *_Jv_java_lang_Class_getDeclaringClass(java_lang_Class *klass) c = (classinfo *) klass; - if (!_Jv_java_lang_Class_isPrimitive(klass) && (c->name->text[0] != '[')) { + if (!class_is_primitive(c) && (c->name->text[0] != '[')) { if (c->innerclasscount == 0) /* no innerclasses exist */ return NULL; @@ -502,7 +498,7 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, c = (classinfo *) klass; declaredclasscount = 0; - if (!_Jv_java_lang_Class_isPrimitive(klass) && (c->name->text[0] != '[')) { + if (!class_is_primitive(c) && (c->name->text[0] != '[')) { /* determine number of declared classes */ for (i = 0; i < c->innerclasscount; i++) { diff --git a/src/vmcore/class.c b/src/vmcore/class.c index 2a8848889..af8da72e0 100644 --- a/src/vmcore/class.c +++ b/src/vmcore/class.c @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: class.c 7851 2007-05-02 19:57:07Z twisti $ + $Id: class.c 8024 2007-06-06 17:23:42Z twisti $ */ @@ -1364,6 +1364,26 @@ fieldinfo *class_resolvefield(classinfo *c, utf *name, utf *desc, } +/* class_is_primitive ********************************************************** + + Check if the given class is a primitive class. + +*******************************************************************************/ + +bool class_is_primitive(classinfo *c) +{ + s4 i; + + /* search table of primitive classes */ + + for (i = 0; i < PRIMITIVETYPE_COUNT; i++) + if (primitivetype_table[i].class_primitive == c) + return true; + + return false; +} + + /* class_issubclass ************************************************************ Checks if sub is a descendant of super. diff --git a/src/vmcore/class.h b/src/vmcore/class.h index 7ee2800a9..b8ee495aa 100644 --- a/src/vmcore/class.h +++ b/src/vmcore/class.h @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: class.h 7783 2007-04-20 13:28:27Z twisti $ + $Id: class.h 8024 2007-06-06 17:23:42Z twisti $ */ @@ -337,6 +337,8 @@ methodinfo *class_resolvemethod(classinfo *c, utf *name, utf *dest); 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); +bool class_is_primitive(classinfo *c); + bool class_issubclass(classinfo *sub, classinfo *super); bool class_isanysubclass(classinfo *sub, classinfo *super);