You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2007/03/23 13:48:20 UTC
svn commit: r521707 - in /harmony/enhanced/classlib/trunk:
depends/build/defines.mak
modules/portlib/src/main/native/include/shared/hycomp.h
Author: gshimansky
Date: Fri Mar 23 05:48:19 2007
New Revision: 521707
URL: http://svn.apache.org/viewvc?view=rev&rev=521707
Log:
Applied HARMONY-3478 [classlib][winx64] Class library uses 32-bit UDATA and IDATA types
Modified:
harmony/enhanced/classlib/trunk/depends/build/defines.mak
harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/include/shared/hycomp.h
Modified: harmony/enhanced/classlib/trunk/depends/build/defines.mak
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/depends/build/defines.mak?view=diff&rev=521707&r1=521706&r2=521707
==============================================================================
--- harmony/enhanced/classlib/trunk/depends/build/defines.mak (original)
+++ harmony/enhanced/classlib/trunk/depends/build/defines.mak Fri Mar 23 05:48:19 2007
@@ -32,13 +32,14 @@
!IF "$(HY_OS)-$(HY_ARCH)" == "windows-x86_64"
WARNING_LEVEL=W0
+PLATFORM_64=-DHYX86_64
!ELSE
WARNING_LEVEL=WX
!ENDIF
HYCOMMONCFLAGS = \
-$(WARNING_LEVEL) -GF -Gs -MD -Zm400 \
- -D_DLL -D_MT -D_WINSOCKAPI_ \
+ -D_DLL -D_MT -D_WINSOCKAPI_ $(PLATFORM_64) \
/I$(HY_HDK)\include /I$(HY_HDK)\jdk\include /I.
!ifndef HYDEBUGCFLAGS
Modified: harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/include/shared/hycomp.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/include/shared/hycomp.h?view=diff&rev=521707&r1=521706&r2=521707
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/include/shared/hycomp.h (original)
+++ harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/include/shared/hycomp.h Fri Mar 23 05:48:19 2007
@@ -18,54 +18,95 @@
#if !defined(hycomp_h)
#define hycomp_h
-/*
-USE_PROTOTYPES: Use full ANSI prototypes.
-CLOCK_PRIMS: We want the timer/clock prims to be used
-LITTLE_ENDIAN: This is for the intel machines or other
- little endian processors. Defaults to big endian.
-NO_LVALUE_CASTING: This is for compilers that don't like the left side
- of assigns to be cast. It hacks around to do the
- right thing.
-ATOMIC_FLOAT_ACCESS: So that float operations will work.
-LINKED_USER_PRIMITIVES: Indicates that user primitives are statically linked
- with the VM executeable.
-OLD_SPACE_SIZE_DIFF: The 68k uses a different amount of old space.
- This "legitimizes" the change.
-SIMPLE_SIGNAL: For machines that don't use real signals in C.
- (eg: PC, 68k)
-OS_NAME_LOOKUP: Use nlist to lookup user primitive addresses.
-VMCALL: Tag for all functions called by the VM.
-VMAPICALL: Tag for all functions called via the PlatformFunction
- callWith: mechanism.
-
-SYS_FLOAT: For some math functions where extended types (80 or 96 bits) are returned
- Most platforms return as a double
-FLOAT_EXTENDED: If defined, the type name for extended precision floats.
-PLATFORM_IS_ASCII: Must be defined if the platform is ASCII
-EXE_EXTENSION_CHAR: the executable has a delimiter that we want to stop at as part of argv[0].
-*/
-/* By default order doubles in the native (i.e. big/little endian) ordering. */
+/**
+ * USE_PROTOTYPES: Use full ANSI prototypes.
+ *
+ * CLOCK_PRIMS: We want the timer/clock prims to be used
+ *
+ * LITTLE_ENDIAN: This is for the intel machines or other
+ * little endian processors. Defaults to big endian.
+ *
+ * NO_LVALUE_CASTING: This is for compilers that don't like the left side
+ * of assigns to be cast. It hacks around to do the
+ * right thing.
+ *
+ * ATOMIC_FLOAT_ACCESS: So that float operations will work.
+ *
+ * LINKED_USER_PRIMITIVES: Indicates that user primitives are statically linked
+ * with the VM executeable.
+ *
+ * OLD_SPACE_SIZE_DIFF: The 68k uses a different amount of old space.
+ * This "legitimizes" the change.
+ *
+ * SIMPLE_SIGNAL: For machines that don't use real signals in C.
+ * (eg: PC, 68k)
+ *
+ * OS_NAME_LOOKUP: Use nlist to lookup user primitive addresses.
+ *
+ * VMCALL: Tag for all functions called by the VM.
+ *
+ * VMAPICALL: Tag for all functions called via the PlatformFunction
+ * callWith: mechanism.
+ *
+ * SYS_FLOAT: For some math functions where extended types (80 or 96 bits) are returned
+ * Most platforms return as a double
+ *
+ * FLOAT_EXTENDED: If defined, the type name for extended precision floats.
+ *
+ * PLATFORM_IS_ASCII: Must be defined if the platform is ASCII
+ *
+ * EXE_EXTENSION_CHAR: the executable has a delimiter that we want to stop at as part of argv[0].
+ */
+
+ /**
+ * By default order doubles in the native (that is big/little endian) ordering.
+ */
+
#define HY_PLATFORM_DOUBLE_ORDER
-#if defined(LINUX) || defined(FREEBSD) || defined(AIX)
-/* NOTE: Linux supports different processors -- do not assume 386 */
-#if defined(HYX86_64) || defined(HYIA64) || defined(HYPPC64) || defined(HYS390X)
-#define DATA_TYPES_DEFINED
-typedef unsigned long int UDATA; /* 64bits */
-typedef unsigned long int U_64;
+/**
+ * Define common types:
+ * <ul>
+ * <li><code>U_32 / I_32</code> - unsigned/signed 32 bits</li>
+ * <li><code>U_16 / I_16</code> - unsigned/signed 16 bits</li>
+ * <li><code>U_8 / I_8</code> - unsigned/signed 8 bits (bytes -- not to be
+ * confused with char)</li>
+ * </ul>
+ */
+
+typedef int I_32;
+typedef short I_16;
+typedef signed char I_8; /* chars can be unsigned */
typedef unsigned int U_32;
typedef unsigned short U_16;
typedef unsigned char U_8;
-typedef signed long int IDATA; /* 64bits */
+
+/**
+ * Define platform specific types:
+ * <ul>
+ * <li><code>U_64 / I_64</code> - unsigned/signed 64 bits</li>
+ * </ul>
+ */
+
+#if defined(LINUX) || defined(FREEBSD) || defined(AIX)
+
+#define DATA_TYPES_DEFINED
+
+/* NOTE: Linux supports different processors -- do not assume 386 */
+#if defined(HYX86_64) || defined(HYIA64) || defined(HYPPC64) || defined(HYS390X)
+
+typedef unsigned long int U_64; /* 64bits */
typedef long int I_64;
-typedef signed int I_32;
-typedef signed short I_16;
-typedef signed char I_8;
-typedef U_32 BOOLEAN;
#define TOC_UNWRAP_ADDRESS(wrappedPointer) ((void *) (wrappedPointer)[0])
#define TOC_STORE_TOC(dest,wrappedPointer) (dest = ((UDATA*)wrappedPointer)[1])
#define HY_WORD64
+
+#else
+
+typedef long long I_64;
+typedef unsigned long long U_64;
+
#endif
#if defined(HYS390X) || defined(HYS390) || defined(HYPPC64) || defined(HYPPC32)
@@ -87,24 +128,22 @@
#define DIR_SEPARATOR '/'
#define DIR_SEPARATOR_STR "/"
-/* no priorities on Linux */
+/**
+ * No priorities on Linux
+ */
+
#define HY_PRIORITY_MAP {0,0,0,0,0,0,0,0,0,0,0,0}
-#if !defined(DATA_TYPES_DEFINED)
-typedef long long I_64;
-typedef unsigned long long U_64;
-#endif
+typedef U_32 BOOLEAN;
#endif
-#define GLOBAL_DATA(symbol) ((void*)&(symbol))
-#define GLOBAL_TABLE(symbol) GLOBAL_DATA(symbol)
-
/* Win32 - Windows 3.1 & NT using Win32 */
#if defined(WIN32)
#define HY_LITTLE_ENDIAN
+/* Define 64-bit integers for Windows */
typedef __int64 I_64;
typedef unsigned __int64 U_64;
@@ -136,34 +175,44 @@
THREAD_PRIORITY_ABOVE_NORMAL, /* 9 */\
THREAD_PRIORITY_HIGHEST, /*10 */\
THREAD_PRIORITY_TIME_CRITICAL /*11 */}
-#endif
+
+#endif /* defined(WIN32) */
#if !defined(VMCALL)
#define VMCALL
#define VMAPICALL
#endif
#define PVMCALL VMCALL *
-/* Provide some reasonable defaults for the VM "types":
- UDATA unsigned data, can be used as an integer or pointer storage.
- IDATA signed data, can be used as an integer or pointer storage.
- U_64 / I_64 unsigned/signed 64 bits.
- U_32 / I_32 unsigned/signed 32 bits.
- U_16 / I_16 unsigned/signed 16 bits.
- U_8 / I_8 unsigned/signed 8 bits (bytes -- not to be confused with char)
- BOOLEAN something that can be zero or non-zero.
-*/
+
+#define GLOBAL_DATA(symbol) ((void*)&(symbol))
+#define GLOBAL_TABLE(symbol) GLOBAL_DATA(symbol)
+
+/**
+ * Define platform specific types:
+ * <ul>
+ * <li><code>UDATA</code> - unsigned data, can be used as an integer or
+ * pointer storage</li>
+ * <li><code>IDATA</code> - signed data, can be used as an integer or
+ * pointer storage</li>
+ * </ul>
+ */
+/* FIXME: POINTER64 */
+#if defined(HYX86_64) || defined(HYIA64) || defined(HYPPC64) || defined(HYS390X) || defined(POINTER64)
+
+typedef I_64 IDATA;
+typedef U_64 UDATA;
+
+#else /* this is default for non-64bit systems */
+
+typedef I_32 IDATA;
+typedef U_32 UDATA;
+
+#endif /* defined(HYX86_64) */
+
#if !defined(DATA_TYPES_DEFINED)
-typedef unsigned int UDATA;
-typedef unsigned int U_32;
-typedef unsigned short U_16;
-typedef unsigned char U_8;
/* no generic U_64 or I_64 */
-typedef int IDATA;
-typedef int I_32;
-typedef short I_16;
-typedef char I_8;
-/* don't typedef BOOLEAN since it's already def'ed on Win32 */
+/* don't typedef BOOLEAN since it's already def'ed on Win32 */
#define BOOLEAN UDATA
#ifndef HY_BIG_ENDIAN
@@ -177,12 +226,22 @@
#endif
#if !defined(HY_DEFAULT_SCHED)
-/* by default, pthreads platforms use the SCHED_OTHER thread scheduling policy */
+
+/**
+ * By default, pthreads platforms use the <code>SCHED_OTHER</code> thread
+ * scheduling policy.
+ */
+
#define HY_DEFAULT_SCHED SCHED_OTHER
#endif
#if !defined(HY_PRIORITY_MAP)
-/* if no priority map if provided, priorities will be determined algorithmically */
+
+/**
+ * If no priority map if provided, priorities will be determined
+ * algorithmically.
+ */
+
#endif
#if !defined(FALSE)
@@ -207,17 +266,29 @@
#define PROTOTYPE(x) ()
#define VARARGS
#endif
-/* Assign the default line delimiter if it was not set */
+
+/**
+ * Assign the default line delimiter, if it was not set.
+ */
+
#if !defined(PLATFORM_LINE_DELIMITER)
#define PLATFORM_LINE_DELIMITER "\015\012"
#endif
-/* Set the max path length if it was not set */
+
+/**
+ * Set the max path length, if it was not set.
+ */
+
#if !defined(MAX_IMAGE_PATH_LENGTH)
#define MAX_IMAGE_PATH_LENGTH (2048)
#endif
typedef double ESDOUBLE;
typedef float ESSINGLE;
-/* helpers for U_64s */
+
+/**
+ * Helpers for U_64s.
+ */
+
#define CLEAR_U64(u64) (u64 = (U_64)0)
#define LOW_LONG(l) (*((U_32 *) &(l)))
#define HIGH_LONG(l) (*(((U_32 *) &(l)) + 1))
@@ -237,7 +308,11 @@
#define CLASSP(x) ((Class *) (x))
#define CLASSPP(x) ((Class **) (x))
#define BYTEP(x) ((BYTE *) (x))
-/* Test - was conflicting with OS2.h */
+
+/**
+ * Test - was conflicting with OS2.h
+ */
+
#define ESCHAR(x) ((CHARACTER) (x))
#define FLT(x) ((FLOAT) x)
#define FLTP(x) ((FLOAT *) (x))
@@ -279,7 +354,11 @@
#define LFLT(x) FLT((x))
#define LFLTP(x) FLTP((x))
#endif
-/* Macros for converting between words and longs and accessing bits */
+
+/**
+ * Macros for converting between words and longs and accessing bits.
+ */
+
#define HIGH_WORD(x) U16(U32((x)) >> 16)
#define LOW_WORD(x) U16(U32((x)) & 0xFFFF)
#define LOW_BIT(o) (U32((o)) & 1)
@@ -295,24 +374,39 @@
#define HY_CFUNC
#define HY_CDATA
#endif
-/* Macros for tagging functions which read/write the vm thread */
+
+/**
+ * Macros for tagging functions which read/write the vm thread.
+ */
+
#define READSVMTHREAD
#define WRITESVMTHREAD
#define REQUIRESSTACKFRAME
-/* macro for tagging functions which never return */
+
+/**
+ * Macro for tagging functions, which never return.
+ */
+
#if defined(__GNUC__)
-/* on GCC, we can actually pass this information on to the compiler */
+
+/**
+ * On GCC, we can actually pass this information on to the compiler.
+ */
+
#define NORETURN __attribute__((noreturn))
#else
#define NORETURN
#endif
-/* on some systems va_list is an array type. This is probably in
- * violation of the ANSI C spec, but it's not entirely clear. Because of this, we end
- * up with an undesired extra level of indirection if we take the address of a
- * va_list argument.
+
+/**
+ * On some systems va_list is an array type. This is probably in
+ * violation of the ANSI C spec, but it's not entirely clear. Because of
+ * this, we end up with an undesired extra level of indirection if we take
+ * the address of a va_list argument.
*
- * To get it right ,always use the VA_PTR macro
+ * To get it right, always use the VA_PTR macro
*/
+
#if !defined(VA_PTR)
#define VA_PTR(valist) (&valist)
#endif
@@ -323,7 +417,10 @@
#if !defined(TOC_STORE_TOC)
#define TOC_STORE_TOC(dest,wrappedPointer)
#endif
-/* Macros for accessing I_64 values */
+/**
+ * Macros for accessing I_64 values.
+ */
+
#if defined(ATOMIC_LONG_ACCESS)
#define PTR_LONG_STORE(dstPtr, aLongPtr) ((*U32P(dstPtr) = *U32P(aLongPtr)), (*(U32P(dstPtr)+1) = *(U32P(aLongPtr)+1)))
#define PTR_LONG_VALUE(dstPtr, aLongPtr) ((*U32P(aLongPtr) = *U32P(dstPtr)), (*(U32P(aLongPtr)+1) = *(U32P(dstPtr)+1)))
@@ -331,11 +428,19 @@
#define PTR_LONG_STORE(dstPtr, aLongPtr) (*(dstPtr) = *(aLongPtr))
#define PTR_LONG_VALUE(dstPtr, aLongPtr) (*(aLongPtr) = *(dstPtr))
#endif
-/* Macro used when declaring tables which require relocations.*/
+
+/**
+ * Macro used when declaring tables which require relocations.
+ */
+
#if !defined(HYCONST_TABLE)
#define HYCONST_TABLE const
#endif
-/* ANSI qsort is not always available */
+
+/**
+ * ANSI qsort is not always available.
+ */
+
#if !defined(HY_SORT)
#define HY_SORT(base, nmemb, size, compare) qsort((base), (nmemb), (size), (compare))
#endif