summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/wtf/Assertions.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/wtf/Assertions.h')
-rw-r--r--Source/JavaScriptCore/wtf/Assertions.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wtf/Assertions.h b/Source/JavaScriptCore/wtf/Assertions.h
index 3f3af72..13ece31 100644
--- a/Source/JavaScriptCore/wtf/Assertions.h
+++ b/Source/JavaScriptCore/wtf/Assertions.h
@@ -145,6 +145,7 @@ typedef struct {
void WTFReportAssertionFailure(const char* file, int line, const char* function, const char* assertion);
void WTFReportAssertionFailureWithMessage(const char* file, int line, const char* function, const char* assertion, const char* format, ...) WTF_ATTRIBUTE_PRINTF(5, 6);
void WTFReportArgumentAssertionFailure(const char* file, int line, const char* function, const char* argName, const char* assertion);
+void WTFReportBacktrace();
void WTFReportFatalError(const char* file, int line, const char* function, const char* format, ...) WTF_ATTRIBUTE_PRINTF(4, 5);
void WTFReportError(const char* file, int line, const char* function, const char* format, ...) WTF_ATTRIBUTE_PRINTF(4, 5);
void WTFLog(WTFLogChannel* channel, const char* format, ...) WTF_ATTRIBUTE_PRINTF(2, 3);
@@ -176,12 +177,23 @@ void WTFLogVerbose(const char* file, int line, const char* function, WTFLogChann
} while(false)
#else
#define CRASH() do { \
+ WTFReportBacktrace(); \
*(int *)(uintptr_t)0xbbadbeef = 0; \
((void(*)())0)(); /* More reliable, but doesn't say BBADBEEF */ \
} while(false)
#endif
#endif
+/* BACKTRACE
+
+ Print a backtrace to the same location as ASSERT messages.
+*/
+#ifndef BACKTRACE
+#define BACKTRACE() do { \
+ WTFReportBacktrace(); \
+} while(false)
+#endif
+
/* ASSERT, ASSERT_NOT_REACHED, ASSERT_UNUSED
These macros are compiled out of release builds.