]> gcc.gnu.org Git - gcc.git/commitdiff
jni.cc (_Jv_JNI_NewObjectV): Corrected assertion.
authorTom Tromey <tromey@cygnus.com>
Wed, 16 Feb 2000 22:42:41 +0000 (22:42 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Wed, 16 Feb 2000 22:42:41 +0000 (22:42 +0000)
* jni.cc (_Jv_JNI_NewObjectV): Corrected assertion.
(_Jv_JNI_NewObject): Likewise.
(_Jv_JNI_NewObjectA): Likewise.
(_Jv_JNI_CallAnyMethodV): In constructor case, pass correct value
as "return" type to _Jv_CallAnyMethodA.
(_Jv_JNI_CallAnyMethodA): Likewise.
(_Jv_JNI_CallAnyVoidMethodV): Likewise.

From-SVN: r32017

libjava/ChangeLog
libjava/jni.cc

index 1dae782a567ca7ea3ffb296de9af7e865513c22f..267554093b0262dfcb2025329f59f3bcf982afe5 100644 (file)
@@ -1,5 +1,13 @@
 2000-02-16  Tom Tromey  <tromey@cygnus.com>
 
+       * jni.cc (_Jv_JNI_NewObjectV): Corrected assertion.
+       (_Jv_JNI_NewObject): Likewise.
+       (_Jv_JNI_NewObjectA): Likewise.
+       (_Jv_JNI_CallAnyMethodV): In constructor case, pass correct value
+       as "return" type to _Jv_CallAnyMethodA.
+       (_Jv_JNI_CallAnyMethodA): Likewise.
+       (_Jv_JNI_CallAnyVoidMethodV): Likewise.
+
        * jni.cc (_Jv_JNI_FindClass): Use ClassLoader.loadClass, not
        findClass.
 
index b67dd05092711de1274dec90c25c2cb8d3664a6f..38f89d368816078a99e84f04cdf5be195612a25c 100644 (file)
@@ -560,6 +560,10 @@ _Jv_JNI_CallAnyMethodV (JNIEnv *env, jobject obj, jclass klass,
   jvalue args[arg_types->length];
   array_from_valist (args, arg_types, vargs);
 
+  // For constructors we need to pass the Class we are instantiating.
+  if (style == constructor)
+    return_type = klass;
+
   jvalue result;
   jthrowable ex = _Jv_CallAnyMethodA (obj, return_type, id,
                                      style == constructor,
@@ -604,6 +608,10 @@ _Jv_JNI_CallAnyMethodA (JNIEnv *env, jobject obj, jclass klass,
   _Jv_GetTypesFromSignature (id, decl_class,
                             &arg_types, &return_type);
 
+  // For constructors we need to pass the Class we are instantiating.
+  if (style == constructor)
+    return_type = klass;
+
   jvalue result;
   jthrowable ex = _Jv_CallAnyMethodA (obj, return_type, id,
                                      style == constructor,
@@ -636,6 +644,10 @@ _Jv_JNI_CallAnyVoidMethodV (JNIEnv *env, jobject obj, jclass klass,
   jvalue args[arg_types->length];
   array_from_valist (args, arg_types, vargs);
 
+  // For constructors we need to pass the Class we are instantiating.
+  if (style == constructor)
+    return_type = klass;
+
   jthrowable ex = _Jv_CallAnyMethodA (obj, return_type, id,
                                      style == constructor,
                                      arg_types, args, NULL);
@@ -804,7 +816,11 @@ _Jv_JNI_NewObjectV (JNIEnv *env, jclass klass,
 {
   JvAssert (klass && ! klass->isArray ());
   JvAssert (! strcmp (id->name->data, "<init>")
-           && ! strcmp (id->signature->data, "()V"));
+           && id->signature->length > 2
+           && id->signature->data[0] == '('
+           && ! strcmp (&id->signature->data[id->signature->length - 2],
+                        ")V"));
+
   return _Jv_JNI_CallAnyMethodV<jobject, constructor> (env, NULL, klass,
                                                       id, args);
 }
@@ -814,7 +830,10 @@ _Jv_JNI_NewObject (JNIEnv *env, jclass klass, jmethodID id, ...)
 {
   JvAssert (klass && ! klass->isArray ());
   JvAssert (! strcmp (id->name->data, "<init>")
-           && ! strcmp (id->signature->data, "()V"));
+           && id->signature->length > 2
+           && id->signature->data[0] == '('
+           && ! strcmp (&id->signature->data[id->signature->length - 2],
+                        ")V"));
 
   va_list args;
   jobject result;
@@ -833,7 +852,11 @@ _Jv_JNI_NewObjectA (JNIEnv *env, jclass klass, jmethodID id,
 {
   JvAssert (klass && ! klass->isArray ());
   JvAssert (! strcmp (id->name->data, "<init>")
-           && ! strcmp (id->signature->data, "()V"));
+           && id->signature->length > 2
+           && id->signature->data[0] == '('
+           && ! strcmp (&id->signature->data[id->signature->length - 2],
+                        ")V"));
+
   return _Jv_JNI_CallAnyMethodA<jobject, constructor> (env, NULL, klass,
                                                       id, args);
 }
This page took 0.07321 seconds and 5 git commands to generate.