| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef BASE_LOGGING_H_ | 5 #ifndef BASE_LOGGING_H_ |
| 6 #define BASE_LOGGING_H_ | 6 #define BASE_LOGGING_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <cassert> | 10 #include <cassert> |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 std::string* message_; | 459 std::string* message_; |
| 460 }; | 460 }; |
| 461 | 461 |
| 462 // Crashes in the fastest, simplest possible way with no attempt at logging. | 462 // Crashes in the fastest, simplest possible way with no attempt at logging. |
| 463 #if defined(COMPILER_GCC) || defined(__clang__) | 463 #if defined(COMPILER_GCC) || defined(__clang__) |
| 464 #define IMMEDIATE_CRASH() __builtin_trap() | 464 #define IMMEDIATE_CRASH() __builtin_trap() |
| 465 #else | 465 #else |
| 466 #define IMMEDIATE_CRASH() ((void)(*(volatile char*)0 = 0)) | 466 #define IMMEDIATE_CRASH() ((void)(*(volatile char*)0 = 0)) |
| 467 #endif | 467 #endif |
| 468 | 468 |
| 469 // Specialization of IMMEDIATE_CRASH which will raise a custom exception on | |
| 470 // Windows to signal this is OOM and not a normal assert. | |
| 471 #if defined(OS_WIN) | |
| 472 #define OOM_CRASH() \ | |
| 473 do { \ | |
| 474 ::RaiseException(0xE0000008, EXCEPTION_NONCONTINUABLE, 0, nullptr); \ | |
| 475 IMMEDIATE_CRASH(); \ | |
| 476 } while (0) | |
| 477 #else | |
| 478 #define OOM_CRASH() IMMEDIATE_CRASH() | |
| 479 #endif | |
| 480 | |
| 481 // CHECK dies with a fatal error if condition is not true. It is *not* | 469 // CHECK dies with a fatal error if condition is not true. It is *not* |
| 482 // controlled by NDEBUG, so the check will be executed regardless of | 470 // controlled by NDEBUG, so the check will be executed regardless of |
| 483 // compilation mode. | 471 // compilation mode. |
| 484 // | 472 // |
| 485 // We make sure CHECK et al. always evaluates their arguments, as | 473 // We make sure CHECK et al. always evaluates their arguments, as |
| 486 // doing CHECK(FunctionWithSideEffect()) is a common idiom. | 474 // doing CHECK(FunctionWithSideEffect()) is a common idiom. |
| 487 | 475 |
| 488 #if defined(OFFICIAL_BUILD) && defined(NDEBUG) | 476 #if defined(OFFICIAL_BUILD) && defined(NDEBUG) |
| 489 | 477 |
| 490 // Make all CHECK functions discard their log strings to reduce code bloat, and | 478 // Make all CHECK functions discard their log strings to reduce code bloat, and |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1029 #elif NOTIMPLEMENTED_POLICY == 5 | 1017 #elif NOTIMPLEMENTED_POLICY == 5 |
| 1030 #define NOTIMPLEMENTED() do {\ | 1018 #define NOTIMPLEMENTED() do {\ |
| 1031 static bool logged_once = false;\ | 1019 static bool logged_once = false;\ |
| 1032 LOG_IF(ERROR, !logged_once) << NOTIMPLEMENTED_MSG;\ | 1020 LOG_IF(ERROR, !logged_once) << NOTIMPLEMENTED_MSG;\ |
| 1033 logged_once = true;\ | 1021 logged_once = true;\ |
| 1034 } while(0);\ | 1022 } while(0);\ |
| 1035 EAT_STREAM_PARAMETERS | 1023 EAT_STREAM_PARAMETERS |
| 1036 #endif | 1024 #endif |
| 1037 | 1025 |
| 1038 #endif // BASE_LOGGING_H_ | 1026 #endif // BASE_LOGGING_H_ |
| OLD | NEW |