| Index: base/check_example.cc | 
| diff --git a/base/check_example.cc b/base/check_example.cc | 
| index 4b3f4287dbf1455257dc067c4cda057d481e2e89..7b9d8e6a80e149cd065415d64c2b655e18d4f838 100644 | 
| --- a/base/check_example.cc | 
| +++ b/base/check_example.cc | 
| @@ -5,16 +5,27 @@ | 
| // This file is meant for analyzing the code generated by the CHECK | 
| // macros in a small executable file that's easy to disassemble. | 
|  | 
| +#include "base/compiler_specific.h" | 
| #include "base/logging.h" | 
|  | 
| // An official build shouldn't generate code to print out messages for | 
| // the CHECK* macros, nor should it have the strings in the | 
| -// executable. | 
| +// executable. It is also important that the CHECK() function collapse to the | 
| +// same implementation as RELEASE_ASSERT(), in particular on Windows x86. | 
| +// Historically, the stream eating caused additional unnecessary instructions. | 
| +// See https://crbug.com/672699. | 
| + | 
| +#define BLINK_RELEASE_ASSERT_EQUIVALENT(assertion) \ | 
| +  (UNLIKELY(!(assertion)) ? (IMMEDIATE_CRASH()) : (void)0) | 
|  | 
| void DoCheck(bool b) { | 
| CHECK(b) << "DoCheck " << b; | 
| } | 
|  | 
| +void DoBlinkReleaseAssert(bool b) { | 
| +  BLINK_RELEASE_ASSERT_EQUIVALENT(b); | 
| +} | 
| + | 
| void DoCheckEq(int x, int y) { | 
| CHECK_EQ(x, y); | 
| } | 
| @@ -22,4 +33,5 @@ void DoCheckEq(int x, int y) { | 
| int main(int argc, const char* argv[]) { | 
| DoCheck(argc > 1); | 
| DoCheckEq(argc, 1); | 
| +  DoBlinkReleaseAssert(argc > 1); | 
| } | 
|  |