unity-dotnet: the wasm JIT on by default (GEXMONO_WASM_JIT=0 for the interpreter only); embed keeps an interpreter-only leg

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_d2453757b8a84fdbb4ee7c9e093141df
This commit is contained in:
velzieandClaude Opus 5.5 committed 2026-10-07 18:45:32 -04:00
1 parent 082c7dece7
commit d4a9389db0
2 files changed
+5 -4

No files matched your search

+2 -1
View File
@@ -20,7 +20,8 @@ FW=$(dirname "$(dotnet --list-runtimes | awk '/Microsoft.NETCore.App 10\./ {v=$2
cp "$OUT/lib/System.Private.CoreLib.dll" "$T/lib/"
cp "$FW/System.Runtime.dll" "$FW/System.Collections.dll" "$FW/System.Runtime.InteropServices.dll" "$T/lib/"
cd "$T"
GEX_WASM_DLLS=libmonobdwgc-2.0.so="$OUT/provider/mono.wasm" timeout 300 "$GEXC" run --mem64 \
# The interpreter only (the wasm JIT is on by default; GEXMONO_WASM_JIT=0).
GEX_WASM_DLLS=libmonobdwgc-2.0.so="$OUT/provider/mono.wasm" timeout 300 "$GEXC" run --mem64 --env GEXMONO_WASM_JIT=0 \
--env GEXMONO_ASSEMBLIES="$T/lib" ./embed ./libmonobdwgc-2.0.so "$T/asm/t.dll" | tee out.txt
PATTERNS=("Compute(50) = 50002" "Hello = hello gex from t ptr=8"
"Guest = twice 42; concat guest strings; mix 323.25; scale 2,4,6; big 11,25,52,3; caught from the guest"
@@ -326,12 +326,12 @@ preinit (void)
if (done)
return;
done = 1;
/* The fork's runtime wasm JIT (docs/unity-dotnet.md P5): GEXMONO_WASM_JIT=1 while it is brought up on
* wasm64. Its slots come from the jiterpreter's JIT_CALL table, which the browser's TypeScript sizes and
/* The fork's runtime wasm JIT (docs/unity-dotnet.md P5): on by default (user, 2026-10-07: normal runs
* use the JIT, ejected builds .NET AOT); GEXMONO_WASM_JIT=0 runs the interpreter only. Its slots come from the jiterpreter's JIT_CALL table, which the browser's TypeScript sizes and
* fills; here the host reserves the range in the process's function table (gex.provider_jit_reserve). The
* rest of the jiterpreter (traces, interp_entry and jit_call wrappers) stays off. No inline TLAB
* allocation: SGen runs Boehm-like under gex, without a nursery. */
if (getenv ("GEXMONO_WASM_JIT") && atoi (getenv ("GEXMONO_WASM_JIT")) > 0) {
if (!getenv ("GEXMONO_WASM_JIT") || atoi (getenv ("GEXMONO_WASM_JIT")) > 0) {
static char *opts [] = { "--no-jiterpreter-traces-enabled", "--no-jiterpreter-interp-entry-enabled",
"--no-jiterpreter-jit-call-enabled" };
/* The wasm64 bring-up's feature set: the core tier only. Each of these is a fast path with pointer