JSC::JSWebAssemblyModule::createStub() falls through ASSERT_NOT_REACHED(). These fall-throughs should either use RELEASE_ASSERT_NOT_REACHED(), or add a `return nullptr;` statement after ASSERT_NOT_REACHED(). Presumably the switch statement will never fall through unless there is memory corruption, so a RELEASE_ASSERT_NOT_REACHED() would catch such corruption much earlier. JSWebAssemblyModule* JSWebAssemblyModule::createStub(VM& vm, JSGlobalObject* globalObject, Structure* structure, Wasm::Module::ValidationResult&& result) { [...] auto error = module->generateWasmToJSStubs(vm); if (UNLIKELY(!error)) { switch (error.error()) { case Wasm::BindingFailure::OutOfMemory: throwException(globalObject, scope, createJSWebAssemblyLinkError(globalObject, vm, "Out of executable memory"_s)); return nullptr; } ASSERT_NOT_REACHED(); } return module; } See Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp.
<rdar://problem/87262829>