@@ -243,6 +243,11 @@ void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors,
243243 errors->push_back (" invalid value for --trace-require-module" );
244244 }
245245
246+ if (has_bench_options && !experimental_bench) {
247+ errors->push_back (
248+ " --experimental-bench is required to use --bench or related options" );
249+ }
250+
246251 if (bench_runner && test_runner) {
247252 errors->push_back (" either --bench or --test can be used, not both" );
248253 }
@@ -632,6 +637,10 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
632637 " experimental import support for addons" ,
633638 BOOL_FIELD (experimental_addon_modules),
634639 kAllowedInEnvvar );
640+ AddOption (" --experimental-bench" ,
641+ " experimental node:bench module and benchmark runner" ,
642+ BOOL_FIELD (experimental_bench),
643+ kAllowedInEnvvar );
635644 AddOption (" --experimental-abortcontroller" , " " , NoOp{}, kAllowedInEnvvar );
636645 AddOption (" --experimental-eventsource" ,
637646 " experimental EventSource API" ,
@@ -985,40 +994,47 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
985994 " use the specified file for package map resolution" ,
986995 &EnvironmentOptions::experimental_package_map_path,
987996 kAllowedInEnvvar );
997+ AddOption (" [has_bench_options]" , " " , BOOL_FIELD (has_bench_options));
988998 AddOption (" --bench" ,
989999 " launch benchmark runner on startup" ,
9901000 BOOL_FIELD (bench_runner),
9911001 kDisallowedInEnvvar ,
9921002 false ,
9931003 OptionNamespaces::kBenchRunnerNamespace );
1004+ Implies (" --bench" , " [has_bench_options]" );
9941005 AddOption (" --bench-isolation" ,
9951006 " configures the type of benchmark isolation used in the benchmark "
9961007 " runner" ,
9971008 &EnvironmentOptions::bench_isolation,
9981009 kAllowedInEnvvar ,
9991010 OptionNamespaces::kBenchRunnerNamespace );
1011+ Implies (" --bench-isolation" , " [has_bench_options]" );
10001012 AddOption (" --bench-name-pattern" ,
10011013 " run benchmarks whose name matches this regular expression" ,
10021014 &EnvironmentOptions::bench_name_pattern,
10031015 kAllowedInEnvvar ,
10041016 OptionNamespaces::kBenchRunnerNamespace );
1017+ Implies (" --bench-name-pattern" , " [has_bench_options]" );
10051018 AddOption (" --bench-reporter" ,
10061019 " report benchmark output using the given reporter" ,
10071020 &EnvironmentOptions::bench_reporter,
10081021 kAllowedInEnvvar ,
10091022 OptionNamespaces::kBenchRunnerNamespace );
1023+ Implies (" --bench-reporter" , " [has_bench_options]" );
10101024 AddOption (" --bench-reporter-destination" ,
10111025 " report the given benchmark reporter to the given destination" ,
10121026 &EnvironmentOptions::bench_reporter_destination,
10131027 kAllowedInEnvvar ,
10141028 OptionNamespaces::kBenchRunnerNamespace );
1029+ Implies (" --bench-reporter-destination" , " [has_bench_options]" );
10151030 AddOption (" [has_bench_samples]" , " " , BOOL_FIELD (has_bench_samples));
10161031 AddOption (" --bench-samples" ,
10171032 " specify the number of measured benchmark samples" ,
10181033 &EnvironmentOptions::bench_samples,
10191034 kAllowedInEnvvar ,
10201035 OptionNamespaces::kBenchRunnerNamespace ,
10211036 kStrictOptionParsing );
1037+ Implies (" --bench-samples" , " [has_bench_options]" );
10221038 Implies (" --bench-samples" , " [has_bench_samples]" );
10231039 AddOption (" [has_bench_warmup]" , " " , BOOL_FIELD (has_bench_warmup));
10241040 AddOption (" --bench-warmup" ,
@@ -1027,6 +1043,7 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
10271043 kAllowedInEnvvar ,
10281044 OptionNamespaces::kBenchRunnerNamespace ,
10291045 kStrictOptionParsing );
1046+ Implies (" --bench-warmup" , " [has_bench_options]" );
10301047 Implies (" --bench-warmup" , " [has_bench_warmup]" );
10311048 AddOption (" --test" ,
10321049 " launch test runner on startup" ,
0 commit comments