108 109 110 //---------------------------------------------------------------------------------------------------- 111 // Constant for jlong (specifying an long long canstant is C++ compiler specific) 112 113 // Build a 64bit integer constant 114 #define CONST64(x) (x ## LL) 115 #define UCONST64(x) (x ## ULL) 116 117 const jlong min_jlong = CONST64(0x8000000000000000); 118 const jlong max_jlong = CONST64(0x7fffffffffffffff); 119 120 //---------------------------------------------------------------------------------------------------- 121 // Debugging 122 123 #define DEBUG_EXCEPTION ::abort(); 124 125 extern "C" void breakpoint(); 126 #define BREAKPOINT ::breakpoint() 127 128 // checking for nanness 129 #ifdef AIX 130 inline int g_isnan(float f) { return isnan(f); } 131 inline int g_isnan(double f) { return isnan(f); } 132 #else 133 #error "missing platform-specific definition here" 134 #endif 135 136 // Checking for finiteness 137 138 inline int g_isfinite(jfloat f) { return finite(f); } 139 inline int g_isfinite(jdouble f) { return finite(f); } 140 141 142 // Wide characters 143 144 inline int wcslen(const jchar* x) { return wcslen((const wchar_t*)x); } 145 146 147 // Portability macros | 108 109 110 //---------------------------------------------------------------------------------------------------- 111 // Constant for jlong (specifying an long long canstant is C++ compiler specific) 112 113 // Build a 64bit integer constant 114 #define CONST64(x) (x ## LL) 115 #define UCONST64(x) (x ## ULL) 116 117 const jlong min_jlong = CONST64(0x8000000000000000); 118 const jlong max_jlong = CONST64(0x7fffffffffffffff); 119 120 //---------------------------------------------------------------------------------------------------- 121 // Debugging 122 123 #define DEBUG_EXCEPTION ::abort(); 124 125 extern "C" void breakpoint(); 126 #define BREAKPOINT ::breakpoint() 127 128 #define NORETURN_ATTRIBUTE(function) function __attribute__((noreturn)) 129 130 // checking for nanness 131 #ifdef AIX 132 inline int g_isnan(float f) { return isnan(f); } 133 inline int g_isnan(double f) { return isnan(f); } 134 #else 135 #error "missing platform-specific definition here" 136 #endif 137 138 // Checking for finiteness 139 140 inline int g_isfinite(jfloat f) { return finite(f); } 141 inline int g_isfinite(jdouble f) { return finite(f); } 142 143 144 // Wide characters 145 146 inline int wcslen(const jchar* x) { return wcslen((const wchar_t*)x); } 147 148 149 // Portability macros |