Skip to content

Commit 77b3c43

Browse files
mkustermannCommit Queue
authored andcommitted
[dart2wasm] Add flag to enable protobuf-aware tree shaking
This removes around 10% of size of main module of essentials. Change-Id: I7b3c3d313836aa80990fcdf3ea44702c8b74f1bd Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/462141 Reviewed-by: Ömer Ağacan <omersa@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com>
1 parent c97e255 commit 77b3c43

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

pkg/dart2wasm/lib/compile.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,8 @@ Future<CompilationResult> _runTfaPhase(
477477
// Keep the flags in-sync with
478478
// pkg/vm/test/transformations/type_flow/transformer_test.dart
479479
globalTypeFlow.transformComponent(target, coreTypes, component,
480-
useRapidTypeAnalysis: true);
480+
useRapidTypeAnalysis: true,
481+
treeShakeProtobufs: options.translatorOptions.enableProtobufTreeShaker);
481482

482483
// TFA may have tree shaken members that are in the library index cache.
483484
// To avoid having dangling references in the index, we create a new one.

pkg/dart2wasm/lib/dart2wasm.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ final List<Option> options = [
5959
Flag("verify-type-checks",
6060
(o, value) => o.translatorOptions.verifyTypeChecks = value,
6161
defaultsTo: _d.translatorOptions.verifyTypeChecks),
62+
Flag('enable-protobuf-tree-shaker',
63+
(o, value) => o.translatorOptions.enableProtobufTreeShaker = value,
64+
defaultsTo: _d.translatorOptions.enableProtobufTreeShaker),
6265
Flag("enable-experimental-wasm-interop",
6366
(o, value) => o.translatorOptions.enableExperimentalWasmInterop = value,
6467
defaultsTo: _d.translatorOptions.enableExperimentalWasmInterop),

pkg/dart2wasm/lib/translator.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class TranslatorOptions {
6060
bool generateSourceMaps = true;
6161
bool enableDeferredLoading = false;
6262
bool enableMultiModuleStressTestMode = false;
63+
bool enableProtobufTreeShaker = false;
6364
int inliningLimit = 0;
6465
int? sharedMemoryMaxPages;
6566
bool requireJsStringBuiltin = false;
@@ -84,6 +85,7 @@ class TranslatorOptions {
8485
sink.writeBool(generateSourceMaps);
8586
sink.writeBool(enableDeferredLoading);
8687
sink.writeBool(enableMultiModuleStressTestMode);
88+
sink.writeBool(enableProtobufTreeShaker);
8789
sink.writeInt(inliningLimit);
8890
sink.writeInt(
8991
sharedMemoryMaxPages == null ? 0 : (sharedMemoryMaxPages! + 1));
@@ -109,6 +111,7 @@ class TranslatorOptions {
109111
options.generateSourceMaps = source.readBool();
110112
options.enableDeferredLoading = source.readBool();
111113
options.enableMultiModuleStressTestMode = source.readBool();
114+
options.enableProtobufTreeShaker = source.readBool();
112115
options.inliningLimit = source.readInt();
113116
final int sharedMemoryMaxPages = source.readInt();
114117
options.sharedMemoryMaxPages =

0 commit comments

Comments
 (0)