Index: base/allocator/oom.h |
diff --git a/base/allocator/oom.h b/base/allocator/oom.h |
index 68dfae76b881cfba5164d1de5d2fd5257ab28f1f..e2d197c1ecbeb89a9e4b5d84a9f3daaba98ef3f7 100644 |
--- a/base/allocator/oom.h |
+++ b/base/allocator/oom.h |
@@ -11,16 +11,27 @@ |
#include <windows.h> |
#endif |
+// Do not want trivial entry points just calling OOM_CRASH() to be |
+// commoned up by linker icf/comdat folding. |
+#define OOM_CRASH_PREVENT_ICF() \ |
+ volatile int oom_crash_inhibit_icf = __LINE__; \ |
+ ALLOW_UNUSED_LOCAL(oom_crash_inhibit_icf) |
+ |
// OOM_CRASH() - Specialization of IMMEDIATE_CRASH which will raise a custom |
// exception on Windows to signal this is OOM and not a normal assert. |
#if defined(OS_WIN) |
#define OOM_CRASH() \ |
do { \ |
+ OOM_CRASH_PREVENT_ICF(); \ |
::RaiseException(0xE0000008, EXCEPTION_NONCONTINUABLE, 0, nullptr); \ |
IMMEDIATE_CRASH(); \ |
} while (0) |
#else |
-#define OOM_CRASH() IMMEDIATE_CRASH() |
+#define OOM_CRASH() \ |
+ do { \ |
+ OOM_CRASH_PREVENT_ICF(); \ |
+ IMMEDIATE_CRASH(); \ |
+ } while (0) |
#endif |
#endif // BASE_ALLOCATOR_OOM_H |