Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_reflect_Constructor.c 8295 2007-08-11 17:57:24Z michi $
-
*/
#if defined(ENABLE_ANNOTATIONS)
#include "vm/vm.h"
+#include "vm/exceptions.h"
#endif
#include "vm/types.h"
#include "native/include/java_lang_reflect_Constructor.h"
#if defined(ENABLE_ANNOTATIONS)
-#include "native/include/sun_reflect_ConstantPool.h"
-#include "native/vm/reflect.h"
+# include "native/include/sun_reflect_ConstantPool.h"
+
+# include "native/vm/reflect.h"
#endif
#include "native/vm/java_lang_reflect_Constructor.h"
* Method: constructNative
* Signature: ([Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object;
*/
-JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_constructNative(JNIEnv *env, java_lang_reflect_Constructor *this, java_objectarray *args, java_lang_Class *declaringClass, s4 slot)
+JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_constructNative(JNIEnv *env, java_lang_reflect_Constructor *this, java_handle_objectarray_t *args, java_lang_Class *declaringClass, s4 slot)
{
/* just to be sure */
- assert(LLNI_field_direct(this, clazz) == declaringClass);
+ assert(LLNI_field_direct(this, clazz) == LLNI_DIRECT(declaringClass));
assert(LLNI_field_direct(this, slot) == slot);
return _Jv_java_lang_reflect_Constructor_newInstance(env, this, args);
* Method: declaredAnnotations
* Signature: ()Ljava/util/Map;
*/
-JNIEXPORT struct java_util_Map* JNICALL Java_java_lang_reflect_Constructor_declaredAnnotations(JNIEnv *env, struct java_lang_reflect_Constructor* this)
+JNIEXPORT struct java_util_Map* JNICALL Java_java_lang_reflect_Constructor_declaredAnnotations(JNIEnv *env, java_lang_reflect_Constructor *this)
{
- java_handle_t *o = (java_handle_t*)this;
+ struct java_util_Map *declaredAnnotations = NULL;
+ java_handle_bytearray_t *annotations = NULL;
+ java_lang_Class *declaringClass = NULL;
+ classinfo *referer = NULL;
+
+ LLNI_field_get_ref(this, declaredAnnotations, declaredAnnotations);
- if (this == NULL) {
- exceptions_throw_nullpointerexception();
- return NULL;
+ if (declaredAnnotations == NULL) {
+ LLNI_field_get_val(this, annotations, annotations);
+ LLNI_field_get_ref(this, clazz, declaringClass);
+ LLNI_class_get(this, referer);
+
+ declaredAnnotations = reflect_get_declaredannotatios(annotations, declaringClass, referer);
+
+ LLNI_field_set_ref(this, declaredAnnotations, declaredAnnotations);
}
- return reflect_get_declaredannotatios(&(this->declaredAnnotations), this->annotations, this->clazz, o->vftbl->class);
+ return declaredAnnotations;
}
* Method: getParameterAnnotations
* Signature: ()[[Ljava/lang/annotation/Annotation;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Constructor_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Constructor* this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Constructor_getParameterAnnotations(JNIEnv *env, java_lang_reflect_Constructor *this)
{
- java_handle_t *o = (java_handle_t*)this;
+ java_handle_bytearray_t *parameterAnnotations = NULL;
+ int32_t slot = -1;
+ java_lang_Class *declaringClass = NULL;
+ classinfo *referer = NULL;
- if (this == NULL) {
- exceptions_throw_nullpointerexception();
- return NULL;
- }
+ LLNI_field_get_ref(this, parameterAnnotations, parameterAnnotations);
+ LLNI_field_get_val(this, slot, slot);
+ LLNI_field_get_ref(this, clazz, declaringClass);
+ LLNI_class_get(this, referer);
- return reflect_get_parameterannotations((java_handle_t*)this->parameterAnnotations, this->slot, this->clazz, o->vftbl->class);
+ return reflect_get_parameterannotations((java_handle_t*)parameterAnnotations, slot, declaringClass, referer);
}
#endif