* src/vmcore/primitive.h: Likewise.
* src/vmcore/class.c (class_is_primitive): New function.
(class_isanysubclass): Use class_is_primitive.
* src/vmcore/class.h: Likewise.
* src/native/vm/java_lang_Class.c (isPrimitive): Use
class_is_primitive.
(getDeclaringClass): Likewise.
(getDeclaredClasses): Likewise.
* src/native/vm/sun/jvm.c (JVM_GetProtectionDomain): Likewise.
(JVM_IsPrimitiveClass): Likewise.
(JVM_NewArray): Likewise.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_Class.c 8170 2007-06-30 14:03:18Z twisti $
+ $Id: java_lang_Class.c 8203 2007-07-15 12:30:04Z twisti $
*/
s4 _Jv_java_lang_Class_isPrimitive(java_lang_Class *klass)
{
classinfo *c;
- bool result;
c = (classinfo *) klass;
- result = primitive_class_is_primitive(c);
-
- return result;
+ return class_is_primitive(c);
}
c = (classinfo *) klass;
- if (!primitive_class_is_primitive(c) && (c->name->text[0] != '[')) {
+ if (!class_is_primitive(c) && (c->name->text[0] != '[')) {
if (c->innerclasscount == 0) /* no innerclasses exist */
return NULL;
c = (classinfo *) klass;
declaredclasscount = 0;
- if (!primitive_class_is_primitive(c) && (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++) {
/* Primitive types do not have a protection domain. */
- if (primitive_class_is_primitive(c))
+ if (class_is_primitive(c))
return NULL;
}
jboolean JVM_IsPrimitiveClass(JNIEnv *env, jclass cls)
{
+ classinfo *c;
+
+ c = (classinfo *) cls;
+
#if PRINTJVM
- log_println("JVM_IsPrimitiveClass: cls=%p", cls);
+ log_println("JVM_IsPrimitiveClass(cls=%p)", cls);
#endif
- return primitive_class_is_primitive((classinfo *) cls);
+
+ return class_is_primitive(c);
}
{
classinfo *c;
classinfo *pc;
+ java_arrayheader *a;
java_objectarray *oa;
c = (classinfo *) eltClass;
/* create primitive or object array */
- if (primitive_class_is_primitive(c)) {
+ if (class_is_primitive(c)) {
pc = primitive_arrayclass_get_by_name(c->name);
- oa = builtin_newarray(length, pc);
+ a = builtin_newarray(length, pc);
+
+ return (jobject) a;
}
else {
oa = builtin_anewarray(length, c);
- }
- return (jobject) oa;
+ return (jobject) oa;
+ }
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: class.c 8169 2007-06-30 12:33:50Z twisti $
+ $Id: class.c 8203 2007-07-15 12:30:04Z twisti $
*/
/* Primitive classes are only subclasses of themselves. */
- if ((sub->flags & ACC_CLASS_PRIMITIVE) ||
- (super->flags & ACC_CLASS_PRIMITIVE))
+ if (class_is_primitive(sub) || class_is_primitive(super))
return false;
/* Check for interfaces. */
}
+/* class_is_primitive **********************************************************
+
+ Checks if the given class is a primitive class.
+
+*******************************************************************************/
+
+bool class_is_primitive(classinfo *c)
+{
+ if (c->flags & ACC_CLASS_PRIMITIVE)
+ return true;
+
+ return false;
+}
+
+
/* class_is_array **************************************************************
Checks if the given class is an array class.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: class.h 8169 2007-06-30 12:33:50Z twisti $
+ $Id: class.h 8203 2007-07-15 12:30:04Z twisti $
*/
/* classinfo ******************************************************************/
/* We define this dummy structure of java_lang_Class so we can
- bootstrap cacaoh without needing a java_lang_Class.h file. If the
- size is big enough, is checked during runtime in vm_create. */
+ bootstrap cacaoh without needing a java_lang_Class.h file. Whether
+ the size of the dummy structure is big enough is checked during
+ runtime in vm_create. */
typedef struct {
java_objectheader header;
bool class_issubclass(classinfo *sub, classinfo *super);
bool class_isanysubclass(classinfo *sub, classinfo *super);
+bool class_is_primitive(classinfo *c);
bool class_is_array(classinfo *c);
bool class_is_interface(classinfo *c);
}
-/* primitive_class_is_primitive ************************************************
-
- Check if the given class is a primitive class.
-
-*******************************************************************************/
-
-bool primitive_class_is_primitive(classinfo *c)
-{
- int i;
-
- /* search table of primitive classes */
-
- for (i = 0; i < PRIMITIVETYPE_COUNT; i++)
- if (primitivetype_table[i].class_primitive == c)
- return true;
-
- return false;
-}
-
-
/* primitive_class_get_by_name *************************************************
Returns the primitive class of the given class name.
/* function prototypes ********************************************************/
bool primitive_init(void);
-bool primitive_class_is_primitive(classinfo *c);
classinfo *primitive_class_get_by_name(utf *name);
classinfo *primitive_class_get_by_type(int32_t type);
classinfo *primitive_class_get_by_char(char ch);