aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-11-06 14:14:51 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-11-06 14:14:51 +0000
commit7694d69a1bf318d6eab3aa8278821c60a1ea8e85 (patch)
tree5e40553d62987d7a26ae4504332fd68a3ebc8043 /libjava
parentca01c43fca1e23a4cf0d0f1682dfeb040dbaeff3 (diff)
downloadgcc-7694d69a1bf318d6eab3aa8278821c60a1ea8e85.zip
gcc-7694d69a1bf318d6eab3aa8278821c60a1ea8e85.tar.gz
gcc-7694d69a1bf318d6eab3aa8278821c60a1ea8e85.tar.bz2
jni.cc (array_from_valist): Assume that jlong won't be promoted.
* jni.cc (array_from_valist): Assume that jlong won't be promoted. From-SVN: r58859
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/jni.cc10
2 files changed, 13 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 0ec5797..6a6adf9 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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):
diff --git a/libjava/jni.cc b/libjava/jni.cc
index 2985d47..9865ce4 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -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))