jni.cc (array_from_valist): Assume that jlong won't be promoted.
authorTom Tromey <tromey@redhat.com>
Wed, 6 Nov 2002 14:14:51 +0000 (14:14 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Wed, 6 Nov 2002 14:14:51 +0000 (14:14 +0000)
* jni.cc (array_from_valist): Assume that jlong won't be
promoted.

From-SVN: r58859

libjava/ChangeLog
libjava/jni.cc

index 0ec5797d2b4468fec9094601738253bcb9fd87f8..6a6adf974bfb521b07ffcb317cd4921fca3bbcc7 100644 (file)
@@ -1,3 +1,8 @@
+2002-11-06  Tom Tromey  <tromey@redhat.com>
+
+       * jni.cc (array_from_valist): Assume that jlong won't be
+       promoted.
+
 2002-11-04  R. A. Rivas Diaz  <rivasdiaz@yahoo.com>
 
        * gnu/java/security/provider/SHA.java (engineGetDigestLength):
index 2985d47930d89056c50fac7f16a944f0686e9100..9865ce42a4673c264a43577b48dc2272bccb0ac9 100644 (file)
@@ -693,7 +693,13 @@ array_from_valist (jvalue *values, JArray<jclass> *arg_types, va_list vargs)
     {
       // Here we assume that sizeof(int) >= sizeof(jint), because we
       // use `int' when decoding the varargs.  Likewise for
-      // long/jlong, float, and double.
+      // float, and double.  Also we assume that sizeof(jlong) >=
+      // sizeof(int), i.e. that jlong values are not further
+      // promoted.
+      JvAssert (sizeof (int) >= sizeof (jint));
+      JvAssert (sizeof (jlong) >= sizeof (int));
+      JvAssert (sizeof (double) >= sizeof (jfloat));
+      JvAssert (sizeof (double) >= sizeof (jdouble));
       if (arg_elts[i] == JvPrimClass (byte))
        values[i].b = (jbyte) va_arg (vargs, int);
       else if (arg_elts[i] == JvPrimClass (short))
@@ -701,7 +707,7 @@ array_from_valist (jvalue *values, JArray<jclass> *arg_types, va_list vargs)
       else if (arg_elts[i] == JvPrimClass (int))
        values[i].i = (jint) va_arg (vargs, int);
       else if (arg_elts[i] == JvPrimClass (long))
-       values[i].j = (jlong) va_arg (vargs, long);
+       values[i].j = (jlong) va_arg (vargs, jlong);
       else if (arg_elts[i] == JvPrimClass (float))
        values[i].f = (jfloat) va_arg (vargs, double);
       else if (arg_elts[i] == JvPrimClass (double))