Skip to content

Commit a2cf1f0

Browse files
committed
fix
1 parent ef0e8d2 commit a2cf1f0

File tree

6 files changed

+15
-7
lines changed

6 files changed

+15
-7
lines changed

src/mono/browser/browser.proj

-3
Original file line numberDiff line numberDiff line change
@@ -265,9 +265,6 @@
265265
<ItemGroup Condition="'$(WasmEnableThreads)' == 'true'">
266266
<EmccExportedFunction Include="_emscripten_main_runtime_thread_id" />
267267
</ItemGroup>
268-
<ItemGroup Condition="'$(WasmEnableThreads)' == 'true'">
269-
<EmccExportedFunction Include="_emscripten_main_runtime_thread_id" />
270-
</ItemGroup>
271268
<PropertyGroup>
272269
<_EmccExportedLibraryFunction>"[@(EmccExportedLibraryFunction -> '%27%(Identity)%27', ',')]"</_EmccExportedLibraryFunction>
273270
<_EmccExportedRuntimeMethods>"[@(EmccExportedRuntimeMethod -> '%27%(Identity)%27', ',')]"</_EmccExportedRuntimeMethods>

src/mono/browser/runtime/driver.c

+9
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,10 @@ mono_wasm_load_runtime (int debug_level)
188188
runtime_initialized = 1;
189189
const char *interp_opts = "";
190190

191+
#ifndef DISABLE_THREADS
192+
mono_memory_barrier ();
193+
#endif /* DISABLE_THREADS */
194+
191195
#ifndef INVARIANT_GLOBALIZATION
192196
mono_wasm_link_icu_shim ();
193197
#endif
@@ -230,6 +234,11 @@ mono_wasm_load_runtime (int debug_level)
230234
root_domain = mono_wasm_load_runtime_common (debug_level, wasm_trace_logger, interp_opts);
231235

232236
bindings_initialize_internals();
237+
238+
#ifndef DISABLE_THREADS
239+
mono_memory_barrier ();
240+
#endif /* DISABLE_THREADS */
241+
233242
}
234243

235244
int initialize_runtime()

src/mono/browser/runtime/pthreads/deputy-thread.ts

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export function mono_wasm_start_deputy_thread_async () {
3939
}
4040
});
4141

42+
forceThreadMemoryViewRefresh();
4243
await start_runtime();
4344

4445
postMessageToMain({

src/mono/browser/runtime/pthreads/ui-thread.ts

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { MonoWorkerToMainMessage, monoThreadInfo, mono_wasm_pthread_ptr, update_
99
import { Module, ENVIRONMENT_IS_WORKER, createPromiseController, loaderHelpers, mono_assert, runtimeHelpers } from "../globals";
1010
import { PThreadLibrary, MainToWorkerMessageType, MonoThreadMessage, PThreadInfo, PThreadPtr, PThreadPtrNull, PThreadWorker, PromiseController, Thread, WorkerToMainMessageType, monoMessageSymbol } from "../types/internal";
1111
import { mono_log_info, mono_log_debug, mono_log_warn } from "../logging";
12+
import { forceThreadMemoryViewRefresh } from "../memory";
1213

1314
const threadPromises: Map<PThreadPtr, PromiseController<Thread>[]> = new Map();
1415

@@ -71,6 +72,8 @@ function monoWorkerMessageHandler (worker: PThreadWorker, ev: MessageEvent<any>)
7172
return;
7273
}
7374

75+
forceThreadMemoryViewRefresh();
76+
7477
let thread: Thread;
7578
pthreadId = message.info?.pthreadId ?? 0;
7679
worker.info = Object.assign({}, worker.info, message.info);

src/mono/browser/runtime/startup.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import { populateEmscriptenPool, mono_wasm_init_threads } from "./pthreads";
2828
import { currentWorkerThreadEvents, dotnetPthreadCreated, initWorkerThreadEvents, monoThreadInfo } from "./pthreads";
2929
import { mono_wasm_pthread_ptr, update_thread_info } from "./pthreads";
3030
import { jiterpreter_allocate_tables } from "./jiterpreter-support";
31-
import { localHeapViewU8, malloc } from "./memory";
31+
import { forceThreadMemoryViewRefresh, localHeapViewU8, malloc } from "./memory";
3232
import { assertNoProxies } from "./gc-handles";
3333
import { runtimeList } from "./exports";
3434
import { nativeAbort, nativeExit } from "./run";
@@ -321,6 +321,7 @@ async function onRuntimeInitializedAsync (userOnRuntimeInitialized: (module:Emsc
321321
await wait_for_all_assets();
322322

323323
if (WasmEnableThreads) {
324+
forceThreadMemoryViewRefresh();
324325
runtimeHelpers.deputyWorker.thread!.postMessageToWorker({
325326
type:"deputyThread",
326327
cmd: MainToWorkerMessageType.allAssetsLoaded,

src/mono/mono/utils/mono-memory-model.h

-3
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ mono_memory_barrier (void)
4141
static inline void
4242
mono_memory_barrier (void)
4343
{
44-
#if defined(HOST_BROWSER)
45-
emscripten_atomic_fence();
46-
#endif
4744
__sync_synchronize ();
4845
}
4946

0 commit comments

Comments
 (0)