From 72e3f7a0d408a42bd97fcc6828ef366309c5012d Mon Sep 17 00:00:00 2001 From: Martin Kustermann Date: Tue, 4 Nov 2025 05:17:51 -0800 Subject: [PATCH] [dart2wasm] Fix web/wasm/flute_stress_test in SDK mode Currently `web/wasm/flute_stress_test` is failing on `dart2wasm-linux-optimized-jsc` mode. That mode runs with `--use-sdk` which makes it use `dart compile wasm`. The reason the test is failing is because it passes both `--enable-deferred-loading` and `--multi-module-stress-test` flags to dart2wasm. This causes us to trigger the deferred module flow instead of the specialized multi-module flow. Those two flags should be independent. Change-Id: I8cac976cd91d4e585f38632ada3062e41fce401f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/458800 Commit-Queue: Martin Kustermann Reviewed-by: Nate Biggs --- pkg/dart2wasm/lib/code_generator.dart | 5 ++++- pkg/dart2wasm/lib/kernel_nodes.dart | 4 +--- pkg/dartdev/lib/src/commands/compile.dart | 11 ++++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pkg/dart2wasm/lib/code_generator.dart b/pkg/dart2wasm/lib/code_generator.dart index 538ac9d7d1b..f9559447d98 100644 --- a/pkg/dart2wasm/lib/code_generator.dart +++ b/pkg/dart2wasm/lib/code_generator.dart @@ -2812,7 +2812,10 @@ abstract class AstCodeGenerator } w.ModuleBuilder? _recognizeDeferredModuleGuard(Let let) { - if (!translator.options.enableDeferredLoading) return null; + if (!translator.options.enableDeferredLoading && + !translator.options.enableMultiModuleStressTestMode) { + return null; + } // TODO(http://dartbug.com/61764): Find better way to do this. // diff --git a/pkg/dart2wasm/lib/kernel_nodes.dart b/pkg/dart2wasm/lib/kernel_nodes.dart index 61c3f615087..e9455eacae3 100644 --- a/pkg/dart2wasm/lib/kernel_nodes.dart +++ b/pkg/dart2wasm/lib/kernel_nodes.dart @@ -437,9 +437,7 @@ mixin KernelNodes { index.getTopLevelField('dart:_internal', 'boxedIntImmutableArray'); // Deferred loading. - late final Procedure? loadLibraryFromLoadId = index.tryGetProcedure( - 'dart:_internal', LibraryIndex.topLevel, 'loadLibraryFromLoadId'); - late final Procedure? checkLibraryIsLoadedFromLoadId = index + late final Procedure checkLibraryIsLoadedFromLoadId = index .getTopLevelProcedure('dart:_internal', 'checkLibraryIsLoadedFromLoadId'); late final Procedure? dartInternalLoadingMapGetter = index.tryGetProcedure( 'dart:_internal', LibraryIndex.topLevel, 'get:_loadingMap'); diff --git a/pkg/dartdev/lib/src/commands/compile.dart b/pkg/dartdev/lib/src/commands/compile.dart index 4b32c907b64..b34bf8ac90b 100644 --- a/pkg/dartdev/lib/src/commands/compile.dart +++ b/pkg/dartdev/lib/src/commands/compile.dart @@ -964,10 +964,11 @@ class CompileWasmCommand extends CompileSubcommandCommand { } } - final isMultiModule = args.flag('enable-deferred-loading') || - // Used in testing to force multiple modules. - extraCompilerOptions - .any((e) => e.contains('enable-multi-module-stress-test')); + final isDeferredLoading = args.flag('enable-deferred-loading'); + // Used in testing to force multiple modules. + final isMultiStressTestMode = extraCompilerOptions + .any((e) => e.contains('enable-multi-module-stress-test')); + final isMultiModule = isDeferredLoading || isMultiStressTestMode; final optimizationLevel = int.parse(args.option('optimization-level')!); final runWasmOpt = @@ -1012,7 +1013,7 @@ class CompileWasmCommand extends CompileSubcommandCommand { if (args.flag('print-kernel')) '--print-kernel', if (args.flag(enableAssertsOption.flag)) '--${enableAssertsOption.flag}', if (!generateSourceMap) '--no-source-maps', - if (isMultiModule) '--enable-deferred-loading', + if (isDeferredLoading) '--enable-deferred-loading', for (final define in defines) '-D$define', if (maxPages != null) ...[ '--import-shared-memory',