OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. |
3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 28 matching lines...) Expand all Loading... |
39 #include "wtf/Compiler.h" | 39 #include "wtf/Compiler.h" |
40 #include "wtf/Noncopyable.h" | 40 #include "wtf/Noncopyable.h" |
41 #include "wtf/WTFExport.h" | 41 #include "wtf/WTFExport.h" |
42 #include "wtf/build_config.h" | 42 #include "wtf/build_config.h" |
43 #include <stdarg.h> | 43 #include <stdarg.h> |
44 | 44 |
45 #if OS(WIN) | 45 #if OS(WIN) |
46 #include <windows.h> | 46 #include <windows.h> |
47 #endif | 47 #endif |
48 | 48 |
49 // Users must test "#if ENABLE(ASSERT)", which helps ensure that code | |
50 // testing this macro has included this header. | |
51 #ifndef ENABLE_ASSERT | |
52 #define ENABLE_ASSERT DCHECK_IS_ON() | |
53 #endif | |
54 | |
55 #ifndef LOG_DISABLED | 49 #ifndef LOG_DISABLED |
56 #define LOG_DISABLED !ENABLE(ASSERT) | 50 #define LOG_DISABLED !DCHECK_IS_ON() |
57 #endif | 51 #endif |
58 | 52 |
59 // These helper functions are always declared, but not necessarily always | 53 // These helper functions are always declared, but not necessarily always |
60 // defined if the corresponding function is disabled. | 54 // defined if the corresponding function is disabled. |
61 | 55 |
62 WTF_EXPORT void WTFReportAssertionFailure(const char* file, | 56 WTF_EXPORT void WTFReportAssertionFailure(const char* file, |
63 int line, | 57 int line, |
64 const char* function, | 58 const char* function, |
65 const char* assertion); | 59 const char* assertion); |
66 // WTFLogAlways() is deprecated. crbug.com/638849 | 60 // WTFLogAlways() is deprecated. crbug.com/638849 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 #if OS(WIN) | 139 #if OS(WIN) |
146 // FIXME: Change to use something other than ASSERT to avoid this conflict with | 140 // FIXME: Change to use something other than ASSERT to avoid this conflict with |
147 // the underlying platform. | 141 // the underlying platform. |
148 #undef ASSERT | 142 #undef ASSERT |
149 #endif | 143 #endif |
150 | 144 |
151 #define DCHECK_AT(assertion, file, line) \ | 145 #define DCHECK_AT(assertion, file, line) \ |
152 LAZY_STREAM(logging::LogMessage(file, line, #assertion).stream(), \ | 146 LAZY_STREAM(logging::LogMessage(file, line, #assertion).stream(), \ |
153 DCHECK_IS_ON() ? !(assertion) : false) | 147 DCHECK_IS_ON() ? !(assertion) : false) |
154 | 148 |
155 #if ENABLE(ASSERT) | 149 #if DCHECK_IS_ON() |
156 #define ASSERT(assertion) DCHECK(assertion) | 150 #define ASSERT(assertion) DCHECK(assertion) |
157 #define ASSERT_NOT_REACHED() NOTREACHED() | 151 #define ASSERT_NOT_REACHED() NOTREACHED() |
158 #else | 152 #else |
159 #define ASSERT(assertion) ((void)0) | 153 #define ASSERT(assertion) ((void)0) |
160 #define ASSERT_NOT_REACHED() ((void)0) | 154 #define ASSERT_NOT_REACHED() ((void)0) |
161 #endif | 155 #endif |
162 | 156 |
163 // Users must test "#if ENABLE(SECURITY_ASSERT)", which helps ensure | 157 // Users must test "#if ENABLE(SECURITY_ASSERT)", which helps ensure |
164 // that code testing this macro has included this header. | 158 // that code testing this macro has included this header. |
165 #if defined(ADDRESS_SANITIZER) || ENABLE(ASSERT) | 159 #if defined(ADDRESS_SANITIZER) || DCHECK_IS_ON() |
166 #define ENABLE_SECURITY_ASSERT 1 | 160 #define ENABLE_SECURITY_ASSERT 1 |
167 #else | 161 #else |
168 #define ENABLE_SECURITY_ASSERT 0 | 162 #define ENABLE_SECURITY_ASSERT 0 |
169 #endif | 163 #endif |
170 | 164 |
171 // SECURITY_DCHECK and SECURITY_CHECK | 165 // SECURITY_DCHECK and SECURITY_CHECK |
172 // Use in places where failure of the assertion indicates a possible security | 166 // Use in places where failure of the assertion indicates a possible security |
173 // vulnerability. Classes of these vulnerabilities include bad casts, out of | 167 // vulnerability. Classes of these vulnerabilities include bad casts, out of |
174 // bounds accesses, use-after-frees, etc. Please be sure to file bugs for these | 168 // bounds accesses, use-after-frees, etc. Please be sure to file bugs for these |
175 // failures using the security template: | 169 // failures using the security template: |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 return static_cast<thisType&>(argument); \ | 257 return static_cast<thisType&>(argument); \ |
264 } \ | 258 } \ |
265 inline const thisType& to##thisType##OrDie(const argumentType& argument) { \ | 259 inline const thisType& to##thisType##OrDie(const argumentType& argument) { \ |
266 CHECK(referencePredicate); \ | 260 CHECK(referencePredicate); \ |
267 return static_cast<const thisType&>(argument); \ | 261 return static_cast<const thisType&>(argument); \ |
268 } \ | 262 } \ |
269 void to##thisType##OrDie(const thisType*); \ | 263 void to##thisType##OrDie(const thisType*); \ |
270 void to##thisType##OrDie(const thisType&) | 264 void to##thisType##OrDie(const thisType&) |
271 | 265 |
272 #endif // WTF_Assertions_h | 266 #endif // WTF_Assertions_h |
OLD | NEW |