From 31d43e88006d01f032bff4a986e27910c0f17a94 Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Sun, 18 Feb 2024 18:09:50 +0100 Subject: [PATCH] silence keeping the worker alive for asynchronous operation --- src/mono/browser/runtime/loader/logging.ts | 16 +++++++++++++++- src/mono/browser/runtime/loader/worker.ts | 10 ++++++++-- src/mono/browser/runtime/run.ts | 2 -- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/mono/browser/runtime/loader/logging.ts b/src/mono/browser/runtime/loader/logging.ts index 723e55201fcc5..57cd6ad37c67b 100644 --- a/src/mono/browser/runtime/loader/logging.ts +++ b/src/mono/browser/runtime/loader/logging.ts @@ -9,6 +9,7 @@ import { ENVIRONMENT_IS_WORKER, loaderHelpers } from "./globals"; const methods = ["debug", "log", "trace", "warn", "info", "error"]; const prefix = "MONO_WASM: "; +const emscriptenNoise = "keeping the worker alive for asynchronous operation"; let consoleWebSocket: WebSocket; let theConsoleApi: any; let originalConsoleMethods: any; @@ -71,7 +72,7 @@ function proxyConsoleMethod(prefix: string, func: any, asJson: boolean) { if (typeof payload === "string") { if (WasmEnableThreads) { - if (ENVIRONMENT_IS_WORKER && payload.indexOf("keeping the worker alive for asynchronous operation") !== -1) { + if (ENVIRONMENT_IS_WORKER && payload.indexOf(emscriptenNoise) !== -1) { // muting emscripten noise return; } @@ -101,6 +102,19 @@ function proxyConsoleMethod(prefix: string, func: any, asJson: boolean) { }; } +export function mute_worker_console(): void { + originalConsoleMethods = { + ...console + }; + console.error = (...args: any[]) => { + const payload = args.length > 0 ? args[0] : ""; + if (payload.indexOf(emscriptenNoise) !== -1) { + return; + } + originalConsoleMethods.error(...args); + }; +} + export function setup_proxy_console(id: string, console: Console, origin: string): void { theConsoleApi = console as any; threadNamePrefix = id; diff --git a/src/mono/browser/runtime/loader/worker.ts b/src/mono/browser/runtime/loader/worker.ts index 81a9cecad6a74..a20d192015b27 100644 --- a/src/mono/browser/runtime/loader/worker.ts +++ b/src/mono/browser/runtime/loader/worker.ts @@ -1,13 +1,16 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +import WasmEnableThreads from "consts:wasmEnableThreads"; + import { MonoConfigInternal, WorkerToMainMessageType, monoMessageSymbol } from "../types/internal"; import { MonoConfig } from "../types"; import { deep_merge_config, normalizeConfig } from "./config"; import { ENVIRONMENT_IS_WEB, loaderHelpers } from "./globals"; -import { mono_log_debug } from "./logging"; +import { mono_log_debug, mute_worker_console } from "./logging"; export function setupPreloadChannelToMainThread() { + if (!WasmEnableThreads) return; const channel = new MessageChannel(); const workerPort = channel.port1; const mainPort = channel.port2; @@ -31,6 +34,7 @@ let workerMonoConfigReceived = false; // called when the main thread sends us the mono config function onMonoConfigReceived(config: MonoConfigInternal): void { + if (!WasmEnableThreads) return; if (workerMonoConfigReceived) { mono_log_debug("mono config already received"); return; @@ -45,5 +49,7 @@ function onMonoConfigReceived(config: MonoConfigInternal): void { if (ENVIRONMENT_IS_WEB && config.forwardConsoleLogsToWS && typeof globalThis.WebSocket != "undefined") { loaderHelpers.setup_proxy_console("worker-idle", console, globalThis.location.origin); } + else if (ENVIRONMENT_IS_WEB && !loaderHelpers.config.forwardConsoleLogsToWS) { + mute_worker_console(); + } } - diff --git a/src/mono/browser/runtime/run.ts b/src/mono/browser/runtime/run.ts index 8760aab6514ca..b3c1ae3b04fde 100644 --- a/src/mono/browser/runtime/run.ts +++ b/src/mono/browser/runtime/run.ts @@ -75,8 +75,6 @@ export async function mono_run_main(main_assembly_name?: string, args?: string[] } } - - export function nativeExit(code: number) { if (WasmEnableThreads) { cancelThreads();