Index: src/checks.h |
=================================================================== |
--- src/checks.h (revision 3015) |
+++ src/checks.h (working copy) |
@@ -80,17 +80,18 @@ |
} |
} |
-#if !V8_HOST_ARCH_64_BIT |
-// Helper function used by the CHECK_EQ function when given int64_t |
-// arguments. Should not be called directly. |
-static inline void CheckEqualsHelper(const char* file, int line, |
- const char* expected_source, |
- int64_t expected, |
- const char* value_source, |
- int64_t value) { |
+// Helper function used by the CHECK_INT64_EQ function when given int64_t |
+// arguments. Should not be called directly. We do not overload CHECK_EQ |
+// with both 32-bit and 64-bit integers, because it causes ambiguity |
+// with operands of mixed sizes. |
+static inline void CheckInt64EqualsHelper(const char* file, int line, |
+ const char* expected_source, |
+ int64_t expected, |
+ const char* value_source, |
+ int64_t value) { |
if (expected != value) { |
- // Sorry, printing int64_t in a fanky hex way, |
- // that's our mother tongue after all :) |
+ // Print int64_t values in hex, as two int32s, |
+ // to avoid platform-dependencies. |
V8_Fatal(file, line, |
"CHECK_EQ(%s, %s) failed\n#" |
" Expected: 0x%08x%08x\n# Found: 0x%08x%08x", |
@@ -99,7 +100,6 @@ |
uint32_t(value >> 32), uint32_t(value)); |
} |
} |
-#endif |
// Helper function used by the CHECK_NE function when given int |
@@ -233,7 +233,10 @@ |
#define CHECK_GT(a, b) CHECK((a) > (b)) |
#define CHECK_GE(a, b) CHECK((a) >= (b)) |
+#define CHECK_INT64_EQ(expected, value) CheckInt64EqualsHelper(__FILE__, \ |
+ __LINE__, #expected, expected, #value, value) |
+ |
// This is inspired by the static assertion facility in boost. This |
// is pretty magical. If it causes you trouble on a platform you may |
// find a fix in the boost code. |