Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_Class.c 8339 2007-08-17 21:21:51Z twisti $
-
*/
#endif
#include "native/vm/java_lang_Class.h"
-#include "native/vm/java_lang_String.h"
#if defined(ENABLE_JAVASE)
# include "native/vm/reflect.h"
java_chararray_t *ca;
u4 i;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
/* create a java string */
if (!initialize_class(c))
return NULL;
- return (java_lang_Class *) c;
+ return LLNI_classinfo_wrap(c);
}
classinfo *c;
java_handle_t *ob;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
ob = (java_handle_t *) o;
if (!(c->state & CLASS_LINKED))
classinfo *kc;
classinfo *cc;
- kc = (classinfo *) klass;
- cc = (classinfo *) c;
+ kc = LLNI_classinfo_unwrap(klass);
+ cc = LLNI_classinfo_unwrap(c);
if (cc == NULL) {
exceptions_throw_nullpointerexception();
{
classinfo *c;
- c = (classinfo *) this;
+ c = LLNI_classinfo_unwrap(this);
return class_is_interface(c);
}
{
classinfo *c;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
return class_is_primitive(c);
}
classinfo *c;
classinfo *super;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
super = class_get_superclass(c);
- return (java_lang_Class *) super;
+ return LLNI_classinfo_wrap(super);
}
classinfo *c;
java_handle_objectarray_t *oa;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
oa = class_get_interfaces(c);
utf *innername;
s4 i;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
if (!ignoreInnerClassesAttrib && (c->innerclasscount != 0)) {
/* search for passed class as inner class */
java_lang_Class *_Jv_java_lang_Class_getDeclaringClass(java_lang_Class *klass)
{
classinfo *c;
+ classinfo *dc;
+
+ c = LLNI_classinfo_unwrap(klass);
- c = (classinfo *) klass;
+ dc = class_get_declaringclass(c);
- return (java_lang_Class *) class_get_declaringclass(c);
+ return LLNI_classinfo_wrap(dc);
}
classinfo *c;
java_handle_objectarray_t *oa;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
oa = class_get_declaredclasses(c, publicOnly);
s4 pos;
s4 i;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
/* determine number of fields */
s4 pos;
s4 i;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
public_methods = 0;
s4 pos;
s4 i;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
/* determine number of constructors */
{
classinfo *c;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
return (java_lang_ClassLoader *) c->classloader;
}
{
classinfo *c;
- c = (classinfo *) this;
+ c = LLNI_classinfo_unwrap(this);
return class_is_array(c);
}
*/
java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass)
{
- classinfo *c = (classinfo*)klass;
+ classinfo *c = NULL;
static methodinfo *m_parseAnnotationsIntoArray = NULL;
utf *utf_parseAnnotationsIntoArray = NULL;
utf *utf_desc = NULL;
java_handle_bytearray_t *annotations = NULL;
sun_reflect_ConstantPool *constantPool = NULL;
- uint32_t size = 0;
java_lang_Object *constantPoolOop = (java_lang_Object*)klass;
- if (c == NULL) {
+ if (klass == NULL) {
exceptions_throw_nullpointerexception();
return NULL;
}
- /* Return null for arrays and primitives: */
- if (class_is_primitive(c) || class_is_array(c)) {
- return NULL;
- }
+ c = LLNI_classinfo_unwrap(klass);
- if (c->annotations != NULL) {
- size = c->annotations->size;
- annotations = builtin_newarray_byte(size);
+ /* get annotations: */
+ annotations = class_get_annotations(c);
- if(annotations != NULL) {
- MCOPY(annotations->data, c->annotations->data, uint8_t, size);
- }
+ if (exceptions_get_exception() != NULL) {
+ /* the only exception possible here should be a out of memory exception
+ * raised by copying the annotations into a java bytearray */
+ return NULL;
}
constantPool =
methodinfo *m;
java_lang_reflect_Constructor *rc;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
/* get enclosing method */
methodinfo *m;
java_lang_reflect_Method *rm;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
/* get enclosing method */
classinfo *c;
java_handle_t *o;
- c = (classinfo *) klass;
+ c = LLNI_classinfo_unwrap(klass);
if (c->signature == NULL)
return NULL;