Wasm: Any function argument of type Void should be a validation error
[WebKit-https.git] / Source / bmalloc / bmalloc / Environment.cpp
index 0bd833f..81f7c71 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "BPlatform.h"
 #include "Environment.h"
+#include "ProcessCheck.h"
 #include <cstdlib>
 #include <cstring>
 #if BOS(DARWIN)
 #include <dlfcn.h>
 #endif
 
+#if BUSE(CHECK_NANO_MALLOC)
+extern "C" {
+#if __has_include(<malloc_private.h>)
+#include <malloc_private.h>
+#endif
+int malloc_engaged_nano(void);
+}
+#endif
+
 namespace bmalloc {
 
 static bool isMallocEnvironmentVariableSet()
@@ -107,6 +117,14 @@ static bool isSanitizerEnabled()
 #endif
 }
 
+#if BUSE(CHECK_NANO_MALLOC)
+static bool isNanoMallocEnabled()
+{
+    int result = !!malloc_engaged_nano();
+    return result;
+}
+#endif
+
 Environment::Environment(std::lock_guard<Mutex>&)
     : m_isDebugHeapEnabled(computeIsDebugHeapEnabled())
 {
@@ -120,6 +138,10 @@ bool Environment::computeIsDebugHeapEnabled()
         return true;
     if (isSanitizerEnabled())
         return true;
+#if BUSE(CHECK_NANO_MALLOC)
+    if (!isNanoMallocEnabled() && !shouldProcessUnconditionallyUseBmalloc())
+        return true;
+#endif
     return false;
 }