Skip to content

Commit 26e9c82

Browse files
natebiggsCommit Queue
authored andcommitted
[dart2js] Don't emit deferred loading logs in part files when flag is disabled.
Change-Id: I70a3a3a3c7bd56d8fd994e766f0ab2ab8c1f9ec4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/432820 Reviewed-by: Mayank Patke <[email protected]> Commit-Queue: Nate Biggs <[email protected]>
1 parent c9c8929 commit 26e9c82

File tree

5 files changed

+70
-28
lines changed

5 files changed

+70
-28
lines changed

pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -416,16 +416,24 @@ class ModelEmitter {
416416
js.LiteralString partFileName, {
417417
js.Expression? code,
418418
}) {
419-
return js.js.statement(
420-
'((s,d,e) => {s[d] = s[d] || {}; s[d][e] = s[d][e] || [];'
421-
's[d][e].push({p:#part,e:"beginPart"});})'
422-
'(self,#deferredInitializers, #eventLog)',
423-
{
424-
'deferredInitializers': js.string(deferredInitializersGlobal),
425-
'eventLog': js.string(INITIALIZATION_EVENT_LOG),
426-
'part': partFileName,
427-
},
428-
);
419+
if (_options.enableDeferredLoadingEventLog) {
420+
return js.js.statement(
421+
'((s,d,e) => {s[d] = s[d] || {}; s[d][e] = s[d][e] || [];'
422+
's[d][e].push({p:#part,e:"beginPart"});})'
423+
'(self,#deferredInitializers, #eventLog)',
424+
{
425+
'deferredInitializers': js.string(deferredInitializersGlobal),
426+
'eventLog': js.string(INITIALIZATION_EVENT_LOG),
427+
'part': partFileName,
428+
},
429+
);
430+
} else {
431+
return js.js.statement(
432+
'((s,d) => {s[d] = s[d] || {};})'
433+
'(self,#deferredInitializers)',
434+
{'deferredInitializers': js.string(deferredInitializersGlobal)},
435+
);
436+
}
429437
}
430438

431439
js.Statement buildStartupMetrics() {
@@ -684,17 +692,28 @@ var $startupMetricsGlobal =
684692
String hash = hasher.getHash();
685693

686694
// Now we copy the deferredInitializer.current into its correct hash.
687-
final epilogue = js.js.statement(
688-
'((d,h)=>{d[h]=d.current; '
689-
'd.#eventLog.push({p:#part,e:"endPart",h:h})})'
690-
'(#deferredInitializers,#hash)',
691-
{
692-
'deferredInitializers': deferredInitializersGlobal,
693-
'hash': js.string(hash),
694-
'eventLog': js.string(INITIALIZATION_EVENT_LOG),
695-
'part': outputFileJsString,
696-
},
697-
);
695+
js.Statement epilogue;
696+
if (_options.enableDeferredLoadingEventLog) {
697+
epilogue = js.js.statement(
698+
'((d,h)=>{d[h]=d.current; '
699+
'd.#eventLog.push({p:#part,e:"endPart",h:h})})'
700+
'(#deferredInitializers,#hash)',
701+
{
702+
'deferredInitializers': deferredInitializersGlobal,
703+
'hash': js.string(hash),
704+
'eventLog': js.string(INITIALIZATION_EVENT_LOG),
705+
'part': outputFileJsString,
706+
},
707+
);
708+
} else {
709+
epilogue = js.js.statement(
710+
'((d)=>{d[#hash]=d.current;})(#deferredInitializers)',
711+
{
712+
'deferredInitializers': deferredInitializersGlobal,
713+
'hash': js.string(hash),
714+
},
715+
);
716+
}
698717
output.add('\n');
699718
output.add(
700719
js

pkg/compiler/test/dump_info/data/deferred/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@
105105
"id": "outputUnit/1",
106106
"kind": "outputUnit",
107107
"name": "1",
108-
"size": 1184,
108+
"size": 1035,
109109
"filename": "out_1.part.js",
110110
"imports": [
111111
"lib"

pkg/compiler/test/dump_info/data/deferred_future/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
"id": "outputUnit/1",
114114
"kind": "outputUnit",
115115
"name": "1",
116-
"size": 908,
116+
"size": 759,
117117
"filename": "out_1.part.js",
118118
"imports": [
119119
"lib1"

pkg/compiler/test/end_to_end/bundle_parts_test.dart

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ const String verifyParts = '''
1515
if (!\$__dart_deferred_initializers__) {
1616
throw 'Did not intialize \$__dart_deferred_initializers__';
1717
}
18+
// Expect 'current', and 2 hashes for part files.
19+
if (Object.keys(\$__dart_deferred_initializers__).length != 3) {
20+
var data = JSON.stringify(\$__dart_deferred_initializers__);
21+
throw '\$__dart_deferred_initializers__ has unexpected format: ' + data;
22+
}
23+
''';
24+
25+
const String verifyPartsWithEventLog = '''
26+
if (!\$__dart_deferred_initializers__) {
27+
throw 'Did not intialize \$__dart_deferred_initializers__';
28+
}
1829
// Expect 'eventLog', 'current', and 2 hashes for part files.
1930
if (Object.keys(\$__dart_deferred_initializers__).length != 4) {
2031
var data = JSON.stringify(\$__dart_deferred_initializers__);
@@ -26,7 +37,10 @@ Future<Directory> createTempDir() {
2637
return Directory.systemTemp.createTemp('dart2js_bundle_parts_test-');
2738
}
2839

29-
Future<void> runTestWithOptions(List<String> options) async {
40+
Future<void> runTestWithOptions(
41+
List<String> options,
42+
String verificationString,
43+
) async {
3044
print('Running with flags: $options');
3145
final tmpDir = await createTempDir();
3246
Uri inUri = Platform.script.resolve('deferred_data/deferred_main.dart');
@@ -41,7 +55,10 @@ Future<void> runTestWithOptions(List<String> options) async {
4155
await part2.readAsBytes(),
4256
mode: FileMode.append,
4357
);
44-
await bundledParts.writeAsString('\n$verifyParts', mode: FileMode.append);
58+
await bundledParts.writeAsString(
59+
'\n$verificationString',
60+
mode: FileMode.append,
61+
);
4562
final result = executeJsWithD8([bundledPartsUri]);
4663
if (result.exitCode != 0) {
4764
Expect.fail(
@@ -53,6 +70,10 @@ Future<void> runTestWithOptions(List<String> options) async {
5370
}
5471

5572
void main() async {
56-
await runTestWithOptions([]);
57-
await runTestWithOptions(['--minify']);
73+
await runTestWithOptions([], verifyParts);
74+
await runTestWithOptions(['--minify'], verifyParts);
75+
await runTestWithOptions([
76+
'--minify',
77+
'--log-deferred-loading-events',
78+
], verifyPartsWithEventLog);
5879
}

sdk/lib/_internal/js_runtime/lib/js_helper.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3244,8 +3244,10 @@ void _addEvent({
32443244
///
32453245
/// The events are printed in reverse chronological order in case the tail gets
32463246
/// truncated, the newest events are retained.
3247-
String _getEventLog() {
3247+
String? _getEventLog() {
32483248
var initializationEventLog = JS_EMBEDDED_GLOBAL('', INITIALIZATION_EVENT_LOG);
3249+
if (initializationEventLog == null) return null;
3250+
32493251
final o = JS('', 'Array.from(#).reverse()', initializationEventLog);
32503252
JS(
32513253
'',

0 commit comments

Comments
 (0)