Skip to content

Commit ca51035

Browse files
authored
[wasm] Set the right runtime moniker (#1932)
* [wasm] Set the right runtime moniker Fix dotnet/performance#2250 Commit 80f45ce started using the runtime moniker to decide, which main JS file to use. We use `test-main.js` in net7.0, while we were using `main.js` in older versions. To make that work, let set the right runtime moniker to WasmRuntime. So that later in `Executor::ProcessStartInfo` we select the right file.
1 parent f1aefb5 commit ca51035

File tree

2 files changed

+43
-26
lines changed

2 files changed

+43
-26
lines changed

src/BenchmarkDotNet/ConsoleArguments/ConfigParser.cs

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,21 @@ private static Parser CreateParser(ILogger logger)
9797
settings.MaximumDisplayWidth = Math.Max(MinimumDisplayWidth, GetMaximumDisplayWidth());
9898
});
9999

100+
private static bool MonikerIsWasm(RuntimeMoniker moniker)
101+
102+
{
103+
switch (moniker)
104+
{
105+
case RuntimeMoniker.Wasm:
106+
case RuntimeMoniker.WasmNet50:
107+
case RuntimeMoniker.WasmNet60:
108+
case RuntimeMoniker.WasmNet70:
109+
return true;
110+
default:
111+
return false;
112+
}
113+
}
114+
100115
private static bool Validate(CommandLineOptions options, ILogger logger)
101116
{
102117
if (!AvailableJobs.ContainsKey(options.BaseJob))
@@ -116,7 +131,8 @@ private static bool Validate(CommandLineOptions options, ILogger logger)
116131
{
117132
logger.WriteLineError($"The provided {nameof(options.AOTCompilerPath)} \"{ options.AOTCompilerPath }\" does NOT exist. It MUST be provided.");
118133
}
119-
else if (runtimeMoniker == RuntimeMoniker.Wasm && (options.RuntimeSrcDir == null || options.RuntimeSrcDir.IsNotNullButDoesNotExist()))
134+
else if (MonikerIsWasm(runtimeMoniker) && (options.RuntimeSrcDir == null || options.RuntimeSrcDir.IsNotNullButDoesNotExist()))
135+
120136
{
121137
logger.WriteLineError($"The provided {nameof(options.RuntimeSrcDir)} \"{options.RuntimeSrcDir}\" does NOT exist. It MUST be provided for wasm-aot.");
122138
return false;
@@ -386,13 +402,13 @@ private static Job CreateJobForGivenRuntime(Job baseJob, string runtimeId, Comma
386402

387403
return baseJob.WithRuntime(runtime).WithToolchain(builder.ToToolchain());
388404
case RuntimeMoniker.Wasm:
389-
return MakeWasmJob(baseJob, options, RuntimeInformation.IsNetCore ? CoreRuntime.GetCurrentVersion().MsBuildMoniker : "net5.0");
405+
return MakeWasmJob(baseJob, options, RuntimeInformation.IsNetCore ? CoreRuntime.GetCurrentVersion().MsBuildMoniker : "net5.0", runtimeMoniker);
390406
case RuntimeMoniker.WasmNet50:
391-
return MakeWasmJob(baseJob, options, "net5.0");
407+
return MakeWasmJob(baseJob, options, "net5.0", runtimeMoniker);
392408
case RuntimeMoniker.WasmNet60:
393-
return MakeWasmJob(baseJob, options, "net6.0");
409+
return MakeWasmJob(baseJob, options, "net6.0", runtimeMoniker);
394410
case RuntimeMoniker.WasmNet70:
395-
return MakeWasmJob(baseJob, options, "net7.0");
411+
return MakeWasmJob(baseJob, options, "net7.0", runtimeMoniker);
396412
case RuntimeMoniker.MonoAOTLLVM:
397413
return MakeMonoAOTLLVMJob(baseJob, options, RuntimeInformation.IsNetCore ? CoreRuntime.GetCurrentVersion().MsBuildMoniker : "net6.0");
398414
case RuntimeMoniker.MonoAOTLLVMNet60:
@@ -402,27 +418,27 @@ private static Job CreateJobForGivenRuntime(Job baseJob, string runtimeId, Comma
402418
default:
403419
throw new NotSupportedException($"Runtime {runtimeId} is not supported");
404420
}
405-
}
406-
407-
private static Job MakeMonoAOTLLVMJob(Job baseJob, CommandLineOptions options, string msBuildMoniker)
408-
{
409-
var monoAotLLVMRuntime = new MonoAotLLVMRuntime(aotCompilerPath: options.AOTCompilerPath, msBuildMoniker: msBuildMoniker);
410-
411-
var toolChain = MonoAotLLVMToolChain.From(
412-
new NetCoreAppSettings(
413-
targetFrameworkMoniker: monoAotLLVMRuntime.MsBuildMoniker,
414-
runtimeFrameworkVersion: null,
415-
name: monoAotLLVMRuntime.Name,
416-
customDotNetCliPath: options.CliPath?.FullName,
417-
packagesPath: options.RestorePath?.FullName,
418-
customRuntimePack: options.CustomRuntimePack,
419-
aotCompilerPath: options.AOTCompilerPath.ToString(),
420-
aotCompilerMode: options.AOTCompilerMode));
421-
422-
return baseJob.WithRuntime(monoAotLLVMRuntime).WithToolchain(toolChain);
423421
}
424422

425-
private static Job MakeWasmJob(Job baseJob, CommandLineOptions options, string msBuildMoniker)
423+
private static Job MakeMonoAOTLLVMJob(Job baseJob, CommandLineOptions options, string msBuildMoniker)
424+
{
425+
var monoAotLLVMRuntime = new MonoAotLLVMRuntime(aotCompilerPath: options.AOTCompilerPath, msBuildMoniker: msBuildMoniker);
426+
427+
var toolChain = MonoAotLLVMToolChain.From(
428+
new NetCoreAppSettings(
429+
targetFrameworkMoniker: monoAotLLVMRuntime.MsBuildMoniker,
430+
runtimeFrameworkVersion: null,
431+
name: monoAotLLVMRuntime.Name,
432+
customDotNetCliPath: options.CliPath?.FullName,
433+
packagesPath: options.RestorePath?.FullName,
434+
customRuntimePack: options.CustomRuntimePack,
435+
aotCompilerPath: options.AOTCompilerPath.ToString(),
436+
aotCompilerMode: options.AOTCompilerMode));
437+
438+
return baseJob.WithRuntime(monoAotLLVMRuntime).WithToolchain(toolChain);
439+
}
440+
441+
private static Job MakeWasmJob(Job baseJob, CommandLineOptions options, string msBuildMoniker, RuntimeMoniker moniker)
426442
{
427443
bool wasmAot = options.AOTCompilerMode == MonoAotCompilerMode.wasm;
428444

@@ -431,7 +447,8 @@ private static Job MakeWasmJob(Job baseJob, CommandLineOptions options, string m
431447
javaScriptEngine: options.WasmJavascriptEngine?.FullName ?? "v8",
432448
javaScriptEngineArguments: options.WasmJavaScriptEngineArguments,
433449
aot: wasmAot,
434-
runtimeSrcDir: options.RuntimeSrcDir);
450+
runtimeSrcDir: options.RuntimeSrcDir,
451+
moniker: moniker);
435452

436453
var toolChain = WasmToolChain.From(new NetCoreAppSettings(
437454
targetFrameworkMoniker: wasmRuntime.MsBuildMoniker,

src/BenchmarkDotNet/Environments/Runtimes/WasmRuntime.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class WasmRuntime : Runtime, IEquatable<WasmRuntime>
2727
/// <param name="displayName">default: "Wasm"</param>
2828
/// <param name="aot">Specifies whether AOT or Interpreter (default) project should be generated.</param>
2929
/// <param name="runtimeSrcDir">The path to runtime source directory.</param>
30-
public WasmRuntime(string msBuildMoniker = "net5.0", string displayName = "Wasm", string javaScriptEngine = "v8", string javaScriptEngineArguments = "--expose_wasm", bool aot = false, DirectoryInfo runtimeSrcDir = null) : base(RuntimeMoniker.Wasm, msBuildMoniker, displayName)
30+
public WasmRuntime(string msBuildMoniker = "net5.0", string displayName = "Wasm", string javaScriptEngine = "v8", string javaScriptEngineArguments = "--expose_wasm", bool aot = false, DirectoryInfo runtimeSrcDir = null, RuntimeMoniker moniker = RuntimeMoniker.Wasm) : base(moniker, msBuildMoniker, displayName)
3131
{
3232
if (!string.IsNullOrEmpty(javaScriptEngine) && javaScriptEngine != "v8" && !File.Exists(javaScriptEngine))
3333
throw new FileNotFoundException($"Provided {nameof(javaScriptEngine)} file: \"{javaScriptEngine}\" doest NOT exist");

0 commit comments

Comments
 (0)