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(); } |