-/* nat/Constructor.c - java/lang/reflect/Constructor
+/* native/vm/Constructor.c - java/lang/reflect/Constructor
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser,
- M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck,
- P. Tomsich, J. Wenninger
+ Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+ R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+ C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+ Institut f. Computersprachen - TU Wien
This file is part of CACAO.
Changes: Joseph Wenninger
- $Id: Constructor.c 951 2004-03-11 17:30:03Z jowenn $
+ $Id: Constructor.c 1735 2004-12-07 14:33:27Z twisti $
*/
#include <string.h>
-#include "jni.h"
-#include "builtin.h"
-#include "loader.h"
-#include "native.h"
-#include "tables.h"
-#include "asmpart.h"
-#include "toolbox/loging.h"
-#include "java_lang_Object.h"
-#include "java_lang_Class.h"
-#include "java_lang_reflect_Constructor.h"
+
+#include "native/jni.h"
+#include "native/native.h"
+#include "native/include/java_lang_Class.h"
+#include "native/include/java_lang_Object.h"
+#include "native/include/java_lang_reflect_Constructor.h"
+#include "toolbox/logging.h"
+#include "vm/builtin.h"
+#include "vm/exceptions.h"
+#include "vm/loader.h"
+#include "vm/options.h"
+#include "vm/tables.h"
+#include "vm/jit/asmpart.h"
/*
JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_constructNative(JNIEnv *env, java_lang_reflect_Constructor *this, java_objectarray *parameters, java_lang_Class *clazz, s4 par3)
{
+#if defined(__GNUC__)
#warning fix me for parameters float/double and long long parameters
+#endif
methodinfo *m;
java_objectheader *o;
-
- /* log_text("Java_java_lang_reflect_Constructor_constructNative called");
- log_plain_utf(((struct classinfo*)clazz)->name);*/
-/* log_plain("\n"); */
-
/* find initializer */
if (!parameters) {
if (this->parameterTypes->header.size != 0) {
- (*env)->ThrowNew(env, loader_load(utf_new_char("java/lang/IllegalArgumentException")), "wrong number of arguments");
+ *exceptionptr =
+ new_exception_message(string_java_lang_IllegalArgumentException,
+ "wrong number of arguments");
return 0;
}
} else {
if (this->parameterTypes->header.size != parameters->header.size) {
- (*env)->ThrowNew(env, loader_load(utf_new_char("java/lang/IllegalArgumentException")), "wrong number of arguments");
+ *exceptionptr =
+ new_exception_message(string_java_lang_IllegalArgumentException,
+ "wrong number of arguments");
return 0;
}
}
/* &&
(m->descriptor == create_methodsig(this->parameterTypes,"V"))))*/
{
- if (verbose) {
+ if (opt_verbose) {
char logtext[MAXLOGTEXT];
sprintf(logtext, "Warning: class has no instance-initializer of specified type: ");
utf_sprint(logtext + strlen(logtext), ((classinfo *) clazz)->name);
log_plain("\n");
class_showconstantpool((classinfo *) clazz);
}
+#if defined(__GNUC__)
#warning throw an exception here, although this should never happen
+#endif
return (java_lang_Object *) o;
}
log_text("Not supported number of arguments in Java_java_lang_reflect_Constructor");
}
#endif
- /*log_plain_utf(m->descriptor);
- log_text("calling constructor");*/
- (void) jni_method_invokeNativeHelper(env, m ,o, parameters);
- /*log_text("Java_java_lang_reflect_Constructor: returning object");*/
+ (void) jni_method_invokeNativeHelper(env, m ,o, parameters);
return (java_lang_Object *) o;
}
*/
JNIEXPORT s4 JNICALL Java_java_lang_reflect_Constructor_getModifiers(JNIEnv *env, java_lang_reflect_Constructor *this)
{
- /* log_text("Java_java_lang_reflect_Constructor_getModifiers called");*/
classinfo *c = (classinfo *) (this->clazz);
if ((this->slot < 0) || (this->slot >= c->methodscount))