Title: [289144] trunk/Source/bmalloc
- Revision
- 289144
- Author
- ysuz...@apple.com
- Date
- 2022-02-04 16:51:35 -0800 (Fri, 04 Feb 2022)
Log Message
[libpas] allocation failure crash should be PAS_NEVER_INLINE
https://bugs.webkit.org/show_bug.cgi?id=236164
Reviewed by Saam Barati.
We introduce pas_allocation_result_crash_on_error function which can leave OOM crash
information in the crash log. To keep this non-inlined, we annotate it PAS_NEVER_INLINE.
* libpas/src/libpas/pas_allocation_result.h:
(pas_allocation_result_crash_on_error):
* libpas/src/libpas/pas_utils.c:
(pas_panic_on_out_of_memory_error):
* libpas/src/libpas/pas_utils.h:
Modified Paths
Diff
Modified: trunk/Source/bmalloc/ChangeLog (289143 => 289144)
--- trunk/Source/bmalloc/ChangeLog 2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/ChangeLog 2022-02-05 00:51:35 UTC (rev 289144)
@@ -1,3 +1,19 @@
+2022-02-04 Yusuke Suzuki <ysuz...@apple.com>
+
+ [libpas] allocation failure crash should be PAS_NEVER_INLINE
+ https://bugs.webkit.org/show_bug.cgi?id=236164
+
+ Reviewed by Saam Barati.
+
+ We introduce pas_allocation_result_crash_on_error function which can leave OOM crash
+ information in the crash log. To keep this non-inlined, we annotate it PAS_NEVER_INLINE.
+
+ * libpas/src/libpas/pas_allocation_result.h:
+ (pas_allocation_result_crash_on_error):
+ * libpas/src/libpas/pas_utils.c:
+ (pas_panic_on_out_of_memory_error):
+ * libpas/src/libpas/pas_utils.h:
+
2022-02-03 Mikhail R. Gadelha <mikh...@igalia.com>
Fix BSD compilation after r289056
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_allocation_result.h (289143 => 289144)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_allocation_result.h 2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_allocation_result.h 2022-02-05 00:51:35 UTC (rev 289144)
@@ -102,7 +102,8 @@
static PAS_ALWAYS_INLINE pas_allocation_result
pas_allocation_result_crash_on_error(pas_allocation_result result)
{
- PAS_ASSERT(result.did_succeed);
+ if (PAS_UNLIKELY(!result.did_succeed))
+ pas_panic_on_out_of_memory_error();
return result;
}
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils.c (289143 => 289144)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils.c 2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils.c 2022-02-05 00:51:35 UTC (rev 289144)
@@ -55,6 +55,11 @@
}
#endif /* PAS_ENABLE_TESTING */
+void pas_panic_on_out_of_memory_error()
+{
+ __builtin_trap();
+}
+
static void (*deallocation_did_fail_callback)(const char* reason, void* begin);
PAS_NO_RETURN PAS_NEVER_INLINE void pas_deallocation_did_fail(const char *reason, uintptr_t begin)
Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h (289143 => 289144)
--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h 2022-02-05 00:48:34 UTC (rev 289143)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h 2022-02-05 00:51:35 UTC (rev 289144)
@@ -160,6 +160,8 @@
/* NOTE: panic format string must have \n at the end. */
PAS_API PAS_NO_RETURN void pas_panic(const char* format, ...) PAS_FORMAT_PRINTF(1, 2);
+PAS_API PAS_NEVER_INLINE PAS_NO_RETURN void pas_panic_on_out_of_memory_error(void);
+
#define pas_set_deallocation_did_fail_callback __pas_set_deallocation_did_fail_callback
#define pas_set_reallocation_did_fail_callback __pas_set_reallocation_did_fail_callback
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes