| Index: runtime/third_party/double-conversion/src/utils.h
|
| diff --git a/runtime/third_party/double-conversion/src/utils.h b/runtime/third_party/double-conversion/src/utils.h
|
| index dc7d2091d4ce32620987bc521bfe43c5a17a933a..51d5e61e311a2b8e383b8ad3fc9c351f939b2ece 100644
|
| --- a/runtime/third_party/double-conversion/src/utils.h
|
| +++ b/runtime/third_party/double-conversion/src/utils.h
|
| @@ -34,16 +34,28 @@
|
| #include <assert.h>
|
| #ifndef ASSERT
|
| #define ASSERT(condition) \
|
| - do { \
|
| - assert(condition); \
|
| - } while (false && (condition))
|
| + assert(condition);
|
| #endif
|
| #ifndef UNIMPLEMENTED
|
| #define UNIMPLEMENTED() (abort())
|
| #endif
|
| +#ifndef DOUBLE_CONVERSION_NO_RETURN
|
| +#ifdef _MSC_VER
|
| +#define DOUBLE_CONVERSION_NO_RETURN __declspec(noreturn)
|
| +#else
|
| +#define DOUBLE_CONVERSION_NO_RETURN __attribute__((noreturn))
|
| +#endif
|
| +#endif
|
| #ifndef UNREACHABLE
|
| +#ifdef _MSC_VER
|
| +void DOUBLE_CONVERSION_NO_RETURN abort_noreturn();
|
| +inline void abort_noreturn() { abort(); }
|
| +#define UNREACHABLE() (abort_noreturn())
|
| +#else
|
| #define UNREACHABLE() (abort())
|
| #endif
|
| +#endif
|
| +
|
|
|
| // Double operations detection based on target architecture.
|
| // Linux uses a 80bit wide floating point stack on x86. This induces double
|
| @@ -60,11 +72,14 @@
|
| defined(__hppa__) || defined(__ia64__) || \
|
| defined(__mips__) || \
|
| defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
|
| + defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
|
| defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
|
| defined(__SH4__) || defined(__alpha__) || \
|
| defined(_MIPS_ARCH_MIPS32R2) || \
|
| - defined(__AARCH64EL__)
|
| + defined(__AARCH64EL__) || defined(__aarch64__)
|
| #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
|
| +#elif defined(__mc68000__)
|
| +#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
|
| #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
|
| #if defined(_WIN32)
|
| // Windows uses a 64bit wide floating point stack.
|
| @@ -100,6 +115,8 @@ typedef unsigned __int64 uint64_t;
|
|
|
| #endif
|
|
|
| +typedef uint16_t uc16;
|
| +
|
| // The following macro works on both 32 and 64-bit platforms.
|
| // Usage: instead of writing 0x1234567890123456
|
| // write UINT64_2PART_C(0x12345678,90123456);
|
| @@ -165,8 +182,8 @@ template <typename T>
|
| class Vector {
|
| public:
|
| Vector() : start_(NULL), length_(0) {}
|
| - Vector(T* data, int length) : start_(data), length_(length) {
|
| - ASSERT(length == 0 || (length > 0 && data != NULL));
|
| + Vector(T* data, int len) : start_(data), length_(len) {
|
| + ASSERT(len == 0 || (len > 0 && data != NULL));
|
| }
|
|
|
| // Returns a vector using the same backing storage as this one,
|
| @@ -208,8 +225,8 @@ class Vector {
|
| // buffer bounds on all operations in debug mode.
|
| class StringBuilder {
|
| public:
|
| - StringBuilder(char* buffer, int size)
|
| - : buffer_(buffer, size), position_(0) { }
|
| + StringBuilder(char* buffer, int buffer_size)
|
| + : buffer_(buffer, buffer_size), position_(0) { }
|
|
|
| ~StringBuilder() { if (!is_finalized()) Finalize(); }
|
|
|
|
|