javaop.h (int16, [...]): Define to exactly 16 (resp.
authorJakub Jelinek <jakub@redhat.com>
Mon, 29 May 2006 09:51:15 +0000 (11:51 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 29 May 2006 09:51:15 +0000 (11:51 +0200)
* javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64)
bit wide type.
(jword): Define to uint64 on 64-bit arches.
* jcf-dump.c (print_constant): Cast JPOOL_UINT to long.

From-SVN: r114191

gcc/java/ChangeLog
gcc/java/javaop.h
gcc/java/jcf-dump.c

index 9c8373333ce1fc70d9723c6d38361f0942d6c45b..0c17d5836f184bf58df3db21d5c73e5e56a2ee84 100644 (file)
@@ -1,3 +1,10 @@
+2006-05-29  Jakub Jelinek  <jakub@redhat.com>
+
+       * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64)
+       bit wide type.
+       (jword): Define to uint64 on 64-bit arches.
+       * jcf-dump.c (print_constant): Cast JPOOL_UINT to long.
+
 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
 
        * class.c, except.c, expr.c, java-gimplify.c: Fix comment
index 18c3a2886349554224f0b5bd15e10572e4bcaf35..12e001600beee6cfa394ce8ec3ac70109c66b93b 100644 (file)
@@ -30,18 +30,40 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 
 typedef        unsigned char   uint8;
 #ifndef int16
+#if __SHRT_MAX__ == 32767
 #define int16 short
+#elif __INT_MAX__ == 32767
+#define int16 int
+#elif __LONG_MAX__ == 32767
+#define int16 long
+#else
+#define int16 short
+#endif
 #endif
 typedef unsigned int16 uint16;
 
 #ifndef int32
+#if __INT_MAX__ == 2147483647
+#define int32 int
+#elif __LONG_MAX__ == 2147483647
 #define int32 long
+#elif __SHRT_MAX__ == 2147483647
+#define int32 short
+#else
+#define int32 int
+#endif
 #endif
 typedef unsigned int32 uint32;
 
 /* A signed 64-bit (or more) integral type, suitable for Java's 'long'.  */
 #ifndef int64
+#if __LONG_MAX__ == 9223372036854775807LL
+#define int64 long
+#elif __LONG_LONG_MAX__ == 9223372036854775807LL
 #define int64 long long
+#else
+#define int64 long long
+#endif
 #endif
 /* An unsigned 64-bit (or more) integral type, same length as int64. */
 #ifndef uint64
@@ -82,8 +104,15 @@ typedef struct _jdouble {
 
 
 #ifndef jword
+#if defined (__LP64__) || defined (__alpha__) || defined (__MMIX__) \
+    || (defined (_ARCH_PPC) && defined (__64BIT__)) \
+    || defined (__powerpc64__) || defined (__s390x__) || defined (__x86_64__) \
+    || defined (__sparcv9) || (defined (__sparc__) && defined (__arch64__))
+#define jword uint64
+#else
 #define jword uint32
 #endif
+#endif
 
 #ifndef IMMEDIATE_u1
 #define IMMEDIATE_u1 (PC++, CHECK_PC_IN_RANGE(PC), BCODE[PC-1])
index b02dfceabe27c71cca363a6df48cb1351e812cbc..b3246daff5aca60bb3ce74b18b5b700d4db4a9c9 100644 (file)
@@ -574,7 +574,7 @@ print_constant (FILE *out, JCF *jcf, int index, int verbosity)
          }
 
        if (verbosity > 1)
-         fprintf (out, ", bits = 0x%08lx", JPOOL_UINT (jcf, index));
+         fprintf (out, ", bits = 0x%08lx", (long) JPOOL_UINT (jcf, index));
        
        break;
       }