Index: src/utils.h |
diff --git a/src/utils.h b/src/utils.h |
index a09f1778631dae6abf9acac5369c981d189a79c7..1ee4470586d34b0d70d932202260d49956a4c693 100644 |
--- a/src/utils.h |
+++ b/src/utils.h |
@@ -13,6 +13,7 @@ |
#include "include/v8.h" |
#include "src/allocation.h" |
#include "src/base/bits.h" |
+#include "src/base/compiler-specific.h" |
#include "src/base/logging.h" |
#include "src/base/macros.h" |
#include "src/base/platform/platform.h" |
@@ -908,42 +909,21 @@ class TokenDispenserForFinally { |
// ---------------------------------------------------------------------------- |
// I/O support. |
-#if __GNUC__ >= 4 |
-// On gcc we can ask the compiler to check the types of %d-style format |
-// specifiers and their associated arguments. TODO(erikcorry) fix this |
-// so it works on MacOSX. |
-#if defined(__MACH__) && defined(__APPLE__) |
-#define PRINTF_CHECKING |
-#define FPRINTF_CHECKING |
-#define PRINTF_METHOD_CHECKING |
-#define FPRINTF_METHOD_CHECKING |
-#else // MacOsX. |
-#define PRINTF_CHECKING __attribute__ ((format (printf, 1, 2))) |
-#define FPRINTF_CHECKING __attribute__ ((format (printf, 2, 3))) |
-#define PRINTF_METHOD_CHECKING __attribute__ ((format (printf, 2, 3))) |
-#define FPRINTF_METHOD_CHECKING __attribute__ ((format (printf, 3, 4))) |
-#endif |
-#else |
-#define PRINTF_CHECKING |
-#define FPRINTF_CHECKING |
-#define PRINTF_METHOD_CHECKING |
-#define FPRINTF_METHOD_CHECKING |
-#endif |
- |
// Our version of printf(). |
-void PRINTF_CHECKING PrintF(const char* format, ...); |
-void FPRINTF_CHECKING PrintF(FILE* out, const char* format, ...); |
+void PRINTF_FORMAT(1, 2) PrintF(const char* format, ...); |
+void PRINTF_FORMAT(2, 3) PrintF(FILE* out, const char* format, ...); |
// Prepends the current process ID to the output. |
-void PRINTF_CHECKING PrintPID(const char* format, ...); |
+void PRINTF_FORMAT(1, 2) PrintPID(const char* format, ...); |
// Prepends the current process ID and given isolate pointer to the output. |
-void PrintIsolate(void* isolate, const char* format, ...); |
+void PRINTF_FORMAT(2, 3) PrintIsolate(void* isolate, const char* format, ...); |
// Safe formatting print. Ensures that str is always null-terminated. |
// Returns the number of chars written, or -1 if output was truncated. |
-int FPRINTF_CHECKING SNPrintF(Vector<char> str, const char* format, ...); |
-int VSNPrintF(Vector<char> str, const char* format, va_list args); |
+int PRINTF_FORMAT(2, 3) SNPrintF(Vector<char> str, const char* format, ...); |
+int PRINTF_FORMAT(2, 0) |
+ VSNPrintF(Vector<char> str, const char* format, va_list args); |
void StrNCpy(Vector<char> dest, const char* src, size_t n); |
@@ -1446,10 +1426,11 @@ class StringBuilder : public SimpleStringBuilder { |
StringBuilder(char* buffer, int size) : SimpleStringBuilder(buffer, size) { } |
// Add formatted contents to the builder just like printf(). |
- void AddFormatted(const char* format, ...); |
+ void PRINTF_FORMAT(2, 3) AddFormatted(const char* format, ...); |
// Add formatted contents like printf based on a va_list. |
- void AddFormattedList(const char* format, va_list list); |
+ void PRINTF_FORMAT(2, 0) AddFormattedList(const char* format, va_list list); |
+ |
private: |
DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder); |
}; |