| Index: Source/WTF/wtf/Assertions.h
|
| diff --git a/Source/WTF/wtf/Assertions.h b/Source/WTF/wtf/Assertions.h
|
| deleted file mode 100644
|
| index e6f29788571a1a4a5e24a8d63c7442d4eba0f637..0000000000000000000000000000000000000000
|
| --- a/Source/WTF/wtf/Assertions.h
|
| +++ /dev/null
|
| @@ -1,428 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
| - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
| - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
| - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#ifndef WTF_Assertions_h
|
| -#define WTF_Assertions_h
|
| -
|
| -/*
|
| - no namespaces because this file has to be includable from C and Objective-C
|
| -
|
| - Note, this file uses many GCC extensions, but it should be compatible with
|
| - C, Objective C, C++, and Objective C++.
|
| -
|
| - For non-debug builds, everything is disabled by default.
|
| - Defining any of the symbols explicitly prevents this from having any effect.
|
| -
|
| - MSVC7 note: variadic macro support was added in MSVC8, so for now we disable
|
| - those macros in MSVC7. For more info, see the MSDN document on variadic
|
| - macros here:
|
| -
|
| - http://msdn2.microsoft.com/en-us/library/ms177415(VS.80).aspx
|
| -*/
|
| -
|
| -#include <wtf/Platform.h>
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#if !COMPILER(MSVC)
|
| -#include <inttypes.h>
|
| -#endif
|
| -
|
| -#ifdef NDEBUG
|
| -/* Disable ASSERT* macros in release mode. */
|
| -#define ASSERTIONS_DISABLED_DEFAULT 1
|
| -#else
|
| -#define ASSERTIONS_DISABLED_DEFAULT 0
|
| -#endif
|
| -
|
| -#if COMPILER(MSVC7_OR_LOWER)
|
| -#define HAVE_VARIADIC_MACRO 0
|
| -#else
|
| -#define HAVE_VARIADIC_MACRO 1
|
| -#endif
|
| -
|
| -#ifndef BACKTRACE_DISABLED
|
| -#define BACKTRACE_DISABLED ASSERTIONS_DISABLED_DEFAULT
|
| -#endif
|
| -
|
| -#ifndef ASSERT_DISABLED
|
| -#define ASSERT_DISABLED ASSERTIONS_DISABLED_DEFAULT
|
| -#endif
|
| -
|
| -#ifndef ASSERT_MSG_DISABLED
|
| -#if HAVE(VARIADIC_MACRO)
|
| -#define ASSERT_MSG_DISABLED ASSERTIONS_DISABLED_DEFAULT
|
| -#else
|
| -#define ASSERT_MSG_DISABLED 1
|
| -#endif
|
| -#endif
|
| -
|
| -#ifndef ASSERT_ARG_DISABLED
|
| -#define ASSERT_ARG_DISABLED ASSERTIONS_DISABLED_DEFAULT
|
| -#endif
|
| -
|
| -#ifndef FATAL_DISABLED
|
| -#if HAVE(VARIADIC_MACRO)
|
| -#define FATAL_DISABLED ASSERTIONS_DISABLED_DEFAULT
|
| -#else
|
| -#define FATAL_DISABLED 1
|
| -#endif
|
| -#endif
|
| -
|
| -#ifndef ERROR_DISABLED
|
| -#if HAVE(VARIADIC_MACRO)
|
| -#define ERROR_DISABLED ASSERTIONS_DISABLED_DEFAULT
|
| -#else
|
| -#define ERROR_DISABLED 1
|
| -#endif
|
| -#endif
|
| -
|
| -#ifndef LOG_DISABLED
|
| -#if HAVE(VARIADIC_MACRO)
|
| -#define LOG_DISABLED ASSERTIONS_DISABLED_DEFAULT
|
| -#else
|
| -#define LOG_DISABLED 1
|
| -#endif
|
| -#endif
|
| -
|
| -#if COMPILER(GCC)
|
| -#define WTF_PRETTY_FUNCTION __PRETTY_FUNCTION__
|
| -#else
|
| -#define WTF_PRETTY_FUNCTION __FUNCTION__
|
| -#endif
|
| -
|
| -/* WTF logging functions can process %@ in the format string to log a NSObject* but the printf format attribute
|
| - emits a warning when %@ is used in the format string. Until <rdar://problem/5195437> is resolved we can't include
|
| - the attribute when being used from Objective-C code in case it decides to use %@. */
|
| -#if COMPILER(GCC) && !defined(__OBJC__)
|
| -#define WTF_ATTRIBUTE_PRINTF(formatStringArgument, extraArguments) __attribute__((__format__(printf, formatStringArgument, extraArguments)))
|
| -#else
|
| -#define WTF_ATTRIBUTE_PRINTF(formatStringArgument, extraArguments)
|
| -#endif
|
| -
|
| -/* These helper functions are always declared, but not necessarily always defined if the corresponding function is disabled. */
|
| -
|
| -#ifdef __cplusplus
|
| -extern "C" {
|
| -#endif
|
| -
|
| -typedef enum { WTFLogChannelOff, WTFLogChannelOn } WTFLogChannelState;
|
| -
|
| -typedef struct {
|
| - unsigned mask;
|
| - const char *defaultName;
|
| - WTFLogChannelState state;
|
| -} WTFLogChannel;
|
| -
|
| -WTF_EXPORT_PRIVATE void WTFReportAssertionFailure(const char* file, int line, const char* function, const char* assertion);
|
| -WTF_EXPORT_PRIVATE void WTFReportAssertionFailureWithMessage(const char* file, int line, const char* function, const char* assertion, const char* format, ...) WTF_ATTRIBUTE_PRINTF(5, 6);
|
| -WTF_EXPORT_PRIVATE void WTFReportArgumentAssertionFailure(const char* file, int line, const char* function, const char* argName, const char* assertion);
|
| -WTF_EXPORT_PRIVATE void WTFReportFatalError(const char* file, int line, const char* function, const char* format, ...) WTF_ATTRIBUTE_PRINTF(4, 5);
|
| -WTF_EXPORT_PRIVATE void WTFReportError(const char* file, int line, const char* function, const char* format, ...) WTF_ATTRIBUTE_PRINTF(4, 5);
|
| -WTF_EXPORT_PRIVATE void WTFLog(WTFLogChannel*, const char* format, ...) WTF_ATTRIBUTE_PRINTF(2, 3);
|
| -WTF_EXPORT_PRIVATE void WTFLogVerbose(const char* file, int line, const char* function, WTFLogChannel*, const char* format, ...) WTF_ATTRIBUTE_PRINTF(5, 6);
|
| -WTF_EXPORT_PRIVATE void WTFLogAlways(const char* format, ...) WTF_ATTRIBUTE_PRINTF(1, 2);
|
| -
|
| -WTF_EXPORT_PRIVATE void WTFGetBacktrace(void** stack, int* size);
|
| -WTF_EXPORT_PRIVATE void WTFReportBacktrace();
|
| -WTF_EXPORT_PRIVATE void WTFPrintBacktrace(void** stack, int size);
|
| -
|
| -typedef void (*WTFCrashHookFunction)();
|
| -WTF_EXPORT_PRIVATE void WTFSetCrashHook(WTFCrashHookFunction);
|
| -WTF_EXPORT_PRIVATE void WTFInvokeCrashHook();
|
| -WTF_EXPORT_PRIVATE void WTFInstallReportBacktraceOnCrashHook();
|
| -
|
| -#ifdef __cplusplus
|
| -}
|
| -#endif
|
| -
|
| -/* IMMEDIATE_CRASH() - Like CRASH() below but crashes in the fastest, simplest possible way with no attempt at logging. */
|
| -#ifndef IMMEDIATE_CRASH
|
| -#if COMPILER(CLANG)
|
| -#define IMMEDIATE_CRASH() __builtin_trap()
|
| -#else
|
| -#define IMMEDIATE_CRASH() ((void(*)())0)()
|
| -#endif
|
| -#endif
|
| -
|
| -/* CRASH() - Raises a fatal error resulting in program termination and triggering either the debugger or the crash reporter.
|
| -
|
| - Use CRASH() in response to known, unrecoverable errors like out-of-memory.
|
| - Macro is enabled in both debug and release mode.
|
| - To test for unknown errors and verify assumptions, use ASSERT instead, to avoid impacting performance in release builds.
|
| -
|
| - Signals are ignored by the crash reporter on OS X so we must do better.
|
| -*/
|
| -#ifndef CRASH
|
| -#define CRASH() \
|
| - (WTFReportBacktrace(), \
|
| - WTFInvokeCrashHook(), \
|
| - (*(int *)(uintptr_t)0xbbadbeef = 0), \
|
| - IMMEDIATE_CRASH())
|
| -#endif
|
| -
|
| -#if COMPILER(CLANG)
|
| -#define NO_RETURN_DUE_TO_CRASH NO_RETURN
|
| -#else
|
| -#define NO_RETURN_DUE_TO_CRASH
|
| -#endif
|
| -
|
| -
|
| -/* BACKTRACE
|
| -
|
| - Print a backtrace to the same location as ASSERT messages.
|
| -*/
|
| -
|
| -#if BACKTRACE_DISABLED
|
| -
|
| -#define BACKTRACE() ((void)0)
|
| -
|
| -#else
|
| -
|
| -#define BACKTRACE() do { \
|
| - WTFReportBacktrace(); \
|
| -} while(false)
|
| -
|
| -#endif
|
| -
|
| -/* ASSERT, ASSERT_NOT_REACHED, ASSERT_UNUSED
|
| -
|
| - These macros are compiled out of release builds.
|
| - Expressions inside them are evaluated in debug builds only.
|
| -*/
|
| -
|
| -#if OS(WINCE)
|
| -/* FIXME: We include this here only to avoid a conflict with the ASSERT macro. */
|
| -#include <windows.h>
|
| -#undef min
|
| -#undef max
|
| -#undef ERROR
|
| -#endif
|
| -
|
| -#if OS(WINDOWS)
|
| -/* FIXME: Change to use something other than ASSERT to avoid this conflict with the underlying platform */
|
| -#undef ASSERT
|
| -#endif
|
| -
|
| -#if ASSERT_DISABLED
|
| -
|
| -#define ASSERT(assertion) ((void)0)
|
| -#define ASSERT_AT(assertion, file, line, function) ((void)0)
|
| -#define ASSERT_NOT_REACHED() ((void)0)
|
| -#define NO_RETURN_DUE_TO_ASSERT
|
| -
|
| -#if COMPILER(INTEL) && !OS(WINDOWS) || COMPILER(RVCT)
|
| -template<typename T>
|
| -inline void assertUnused(T& x) { (void)x; }
|
| -#define ASSERT_UNUSED(variable, assertion) (assertUnused(variable))
|
| -#else
|
| -#define ASSERT_UNUSED(variable, assertion) ((void)variable)
|
| -#endif
|
| -
|
| -#else
|
| -
|
| -#define ASSERT(assertion) \
|
| - (!(assertion) ? \
|
| - (WTFReportAssertionFailure(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, #assertion), \
|
| - CRASH()) : \
|
| - (void)0)
|
| -
|
| -#define ASSERT_AT(assertion, file, line, function) \
|
| - (!(assertion) ? \
|
| - (WTFReportAssertionFailure(file, line, function, #assertion), \
|
| - CRASH()) : \
|
| - (void)0)
|
| -
|
| -#define ASSERT_NOT_REACHED() do { \
|
| - WTFReportAssertionFailure(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, 0); \
|
| - CRASH(); \
|
| -} while (0)
|
| -
|
| -#define ASSERT_UNUSED(variable, assertion) ASSERT(assertion)
|
| -
|
| -#define NO_RETURN_DUE_TO_ASSERT NO_RETURN_DUE_TO_CRASH
|
| -
|
| -#endif
|
| -
|
| -/* ASSERT_WITH_SECURITY_IMPLICATION
|
| -
|
| - Failure of this assertion indicates a possible security vulnerability.
|
| - Class of vulnerabilities that it tests include bad casts, out of bounds
|
| - accesses, use-after-frees, etc. Please file a bug using the security
|
| - template - https://bugs.webkit.org/enter_bug.cgi?product=Security.
|
| -
|
| -*/
|
| -#ifdef ADDRESS_SANITIZER
|
| -
|
| -#define ASSERT_WITH_SECURITY_IMPLICATION(assertion) \
|
| - (!(assertion) ? \
|
| - (WTFReportAssertionFailure(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, #assertion), \
|
| - CRASH()) : \
|
| - (void)0)
|
| -
|
| -#else
|
| -
|
| -#define ASSERT_WITH_SECURITY_IMPLICATION(assertion) ASSERT(assertion)
|
| -
|
| -#endif
|
| -
|
| -/* ASSERT_WITH_MESSAGE */
|
| -
|
| -#if COMPILER(MSVC7_OR_LOWER)
|
| -#define ASSERT_WITH_MESSAGE(assertion) ((void)0)
|
| -#elif ASSERT_MSG_DISABLED
|
| -#define ASSERT_WITH_MESSAGE(assertion, ...) ((void)0)
|
| -#else
|
| -#define ASSERT_WITH_MESSAGE(assertion, ...) do \
|
| - if (!(assertion)) { \
|
| - WTFReportAssertionFailureWithMessage(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, #assertion, __VA_ARGS__); \
|
| - CRASH(); \
|
| - } \
|
| -while (0)
|
| -#endif
|
| -
|
| -/* ASSERT_WITH_MESSAGE_UNUSED */
|
| -
|
| -#if COMPILER(MSVC7_OR_LOWER)
|
| -#define ASSERT_WITH_MESSAGE_UNUSED(variable, assertion) ((void)0)
|
| -#elif ASSERT_MSG_DISABLED
|
| -#if COMPILER(INTEL) && !OS(WINDOWS) || COMPILER(RVCT)
|
| -template<typename T>
|
| -inline void assertWithMessageUnused(T& x) { (void)x; }
|
| -#define ASSERT_WITH_MESSAGE_UNUSED(variable, assertion, ...) (assertWithMessageUnused(variable))
|
| -#else
|
| -#define ASSERT_WITH_MESSAGE_UNUSED(variable, assertion, ...) ((void)variable)
|
| -#endif
|
| -#else
|
| -#define ASSERT_WITH_MESSAGE_UNUSED(variable, assertion, ...) do \
|
| - if (!(assertion)) { \
|
| - WTFReportAssertionFailureWithMessage(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, #assertion, __VA_ARGS__); \
|
| - CRASH(); \
|
| - } \
|
| -while (0)
|
| -#endif
|
| -
|
| -
|
| -/* ASSERT_ARG */
|
| -
|
| -#if ASSERT_ARG_DISABLED
|
| -
|
| -#define ASSERT_ARG(argName, assertion) ((void)0)
|
| -
|
| -#else
|
| -
|
| -#define ASSERT_ARG(argName, assertion) do \
|
| - if (!(assertion)) { \
|
| - WTFReportArgumentAssertionFailure(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, #argName, #assertion); \
|
| - CRASH(); \
|
| - } \
|
| -while (0)
|
| -
|
| -#endif
|
| -
|
| -/* COMPILE_ASSERT */
|
| -#ifndef COMPILE_ASSERT
|
| -#if COMPILER_SUPPORTS(C_STATIC_ASSERT)
|
| -/* Unlike static_assert below, this also works in plain C code. */
|
| -#define COMPILE_ASSERT(exp, name) _Static_assert((exp), #name)
|
| -#elif COMPILER_SUPPORTS(CXX_STATIC_ASSERT)
|
| -#define COMPILE_ASSERT(exp, name) static_assert((exp), #name)
|
| -#else
|
| -#define COMPILE_ASSERT(exp, name) typedef int dummy##name [(exp) ? 1 : -1]
|
| -#endif
|
| -#endif
|
| -
|
| -/* FATAL */
|
| -
|
| -#if COMPILER(MSVC7_OR_LOWER)
|
| -#define FATAL() ((void)0)
|
| -#elif FATAL_DISABLED
|
| -#define FATAL(...) ((void)0)
|
| -#else
|
| -#define FATAL(...) do { \
|
| - WTFReportFatalError(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, __VA_ARGS__); \
|
| - CRASH(); \
|
| -} while (0)
|
| -#endif
|
| -
|
| -/* LOG_ERROR */
|
| -
|
| -#if COMPILER(MSVC7_OR_LOWER)
|
| -#define LOG_ERROR() ((void)0)
|
| -#elif ERROR_DISABLED
|
| -#define LOG_ERROR(...) ((void)0)
|
| -#else
|
| -#define LOG_ERROR(...) WTFReportError(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, __VA_ARGS__)
|
| -#endif
|
| -
|
| -/* LOG */
|
| -
|
| -#if COMPILER(MSVC7_OR_LOWER)
|
| -#define LOG() ((void)0)
|
| -#elif LOG_DISABLED
|
| -#define LOG(channel, ...) ((void)0)
|
| -#else
|
| -#define LOG(channel, ...) WTFLog(&JOIN_LOG_CHANNEL_WITH_PREFIX(LOG_CHANNEL_PREFIX, channel), __VA_ARGS__)
|
| -#define JOIN_LOG_CHANNEL_WITH_PREFIX(prefix, channel) JOIN_LOG_CHANNEL_WITH_PREFIX_LEVEL_2(prefix, channel)
|
| -#define JOIN_LOG_CHANNEL_WITH_PREFIX_LEVEL_2(prefix, channel) prefix ## channel
|
| -#endif
|
| -
|
| -/* LOG_VERBOSE */
|
| -
|
| -#if COMPILER(MSVC7_OR_LOWER)
|
| -#define LOG_VERBOSE(channel) ((void)0)
|
| -#elif LOG_DISABLED
|
| -#define LOG_VERBOSE(channel, ...) ((void)0)
|
| -#else
|
| -#define LOG_VERBOSE(channel, ...) WTFLogVerbose(__FILE__, __LINE__, WTF_PRETTY_FUNCTION, &JOIN_LOG_CHANNEL_WITH_PREFIX(LOG_CHANNEL_PREFIX, channel), __VA_ARGS__)
|
| -#endif
|
| -
|
| -/* UNREACHABLE_FOR_PLATFORM */
|
| -
|
| -#if COMPILER(CLANG)
|
| -// This would be a macro except that its use of #pragma works best around
|
| -// a function. Hence it uses macro naming convention.
|
| -#pragma clang diagnostic push
|
| -#pragma clang diagnostic ignored "-Wmissing-noreturn"
|
| -static inline void UNREACHABLE_FOR_PLATFORM()
|
| -{
|
| - ASSERT_NOT_REACHED();
|
| -}
|
| -#pragma clang diagnostic pop
|
| -#else
|
| -#define UNREACHABLE_FOR_PLATFORM() ASSERT_NOT_REACHED()
|
| -#endif
|
| -
|
| -#if ASSERT_DISABLED
|
| -#define RELEASE_ASSERT(assertion) (UNLIKELY(!(assertion)) ? (IMMEDIATE_CRASH()) : (void)0)
|
| -#define RELEASE_ASSERT_WITH_MESSAGE(assertion, ...) RELEASE_ASSERT(assertion)
|
| -#define RELEASE_ASSERT_NOT_REACHED() IMMEDIATE_CRASH()
|
| -#else
|
| -#define RELEASE_ASSERT(assertion) ASSERT(assertion)
|
| -#define RELEASE_ASSERT_WITH_MESSAGE(assertion, ...) ASSERT_WITH_MESSAGE(assertion, __VA_ARGS__)
|
| -#define RELEASE_ASSERT_NOT_REACHED() ASSERT_NOT_REACHED()
|
| -#endif
|
| -
|
| -#endif /* WTF_Assertions_h */
|
|
|