mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:19:47 +00:00
Revert "[dart2js] Simplify event log initialization logic in each part file prologue."
This reverts commit 7b2d5baa48
.
Reason for revert: breaks ~600 tests in G3 (though it looks to be just one JS file that got broken), b/287219647
Original change's description:
> [dart2js] Simplify event log initialization logic in each part file prologue.
>
> Change-Id: I0731b78f5b0437f5e5026ee6d9f2511698968804
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/308201
> Commit-Queue: Nate Biggs <natebiggs@google.com>
> Reviewed-by: Sigmund Cherem <sigmund@google.com>
Change-Id: Iedd1b0a4909f490bc54eebde3462e6bd57c3c1a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/309283
Reviewed-by: Alexander Thomas <athom@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
Commit-Queue: Ilya Yanok <yanok@google.com>
This commit is contained in:
parent
396ed71267
commit
042952ef9b
|
@ -377,17 +377,20 @@ class ModelEmitter {
|
|||
return js.Comment(generatedBy(_options, flavor: '$flavor'));
|
||||
}
|
||||
|
||||
js.Statement buildDeferredInitializerGlobal(js.LiteralString partFileName,
|
||||
{js.Expression? code}) {
|
||||
return js.js.statement(
|
||||
'((s,d) => {s[d] = s[d] || {#eventLog: []}; '
|
||||
's[d].#eventLog.push({part:#part,event:"beginLoadPart"});})'
|
||||
'(self,#deferredInitializers)',
|
||||
{
|
||||
'deferredInitializers': js.string(deferredInitializersGlobal),
|
||||
'eventLog': js.string(INITIALIZATION_EVENT_LOG),
|
||||
'part': partFileName,
|
||||
});
|
||||
List<js.Statement> buildDeferredInitializerGlobal() {
|
||||
return [
|
||||
js.js.statement(
|
||||
'self.#deferredInitializers = '
|
||||
'self.#deferredInitializers || Object.create(null);',
|
||||
{'deferredInitializers': deferredInitializersGlobal}),
|
||||
js.js.statement(
|
||||
'self.#deferredInitializers.#eventLog = '
|
||||
'self.#deferredInitializers.#eventLog || [];',
|
||||
{
|
||||
'deferredInitializers': deferredInitializersGlobal,
|
||||
'eventLog': INITIALIZATION_EVENT_LOG
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
js.Statement buildStartupMetrics() {
|
||||
|
@ -438,7 +441,7 @@ var ${startupMetricsGlobal} =
|
|||
js.Program program = js.Program([
|
||||
buildGeneratedBy(),
|
||||
js.Comment(HOOKS_API_USAGE),
|
||||
if (isSplit) buildDeferredInitializerGlobal(js.string('main')),
|
||||
if (isSplit) ...buildDeferredInitializerGlobal(),
|
||||
if (_closedWorld.backendUsage.requiresStartupMetrics)
|
||||
buildStartupMetrics(),
|
||||
code
|
||||
|
@ -580,7 +583,15 @@ var ${startupMetricsGlobal} =
|
|||
final outputFileJsString = js.string(outputFileName);
|
||||
js.Program program = js.Program([
|
||||
if (isFirst) buildGeneratedBy(),
|
||||
if (isFirst) buildDeferredInitializerGlobal(outputFileJsString),
|
||||
if (isFirst) ...buildDeferredInitializerGlobal(),
|
||||
js.js.statement(
|
||||
'#deferredInitializers.#eventLog.push({"part": '
|
||||
'#outputFileName, "event": "beginLoadPart"});',
|
||||
{
|
||||
'deferredInitializers': deferredInitializersGlobal,
|
||||
'eventLog': INITIALIZATION_EVENT_LOG,
|
||||
'outputFileName': outputFileJsString
|
||||
}),
|
||||
js.js.statement('#deferredInitializers.current = #code',
|
||||
{'deferredInitializers': deferredInitializersGlobal, 'code': code})
|
||||
]);
|
||||
|
@ -593,26 +604,31 @@ var ${startupMetricsGlobal} =
|
|||
annotationMonitor: _resourceInfoCollector.monitorFor(outputFileName));
|
||||
_task.measureSubtask('emit buffers', () {
|
||||
output.addBuffer(buffer);
|
||||
// Add semi-colon to separate from IIFE epilogue.
|
||||
output.add(';');
|
||||
});
|
||||
|
||||
// Make a unique hash of the code (before the sourcemaps are added)
|
||||
// This will be used to retrieve the initializing function from the global
|
||||
// variable.
|
||||
String hash = hasher.getHash();
|
||||
final jsStringHash = js.string(hash);
|
||||
|
||||
// Now we copy the deferredInitializer.current into its correct hash.
|
||||
final epilogue = js.js.statement(
|
||||
'((d,h)=>{d[h]=d.current; '
|
||||
'd.#eventLog.push({hash:h,event:"endPartLoad",part:#part})})'
|
||||
'(#deferredInitializers,#hash)',
|
||||
{
|
||||
'deferredInitializers': deferredInitializersGlobal,
|
||||
'hash': js.string(hash),
|
||||
'eventLog': js.string(INITIALIZATION_EVENT_LOG),
|
||||
'part': outputFileJsString,
|
||||
});
|
||||
final epilogue = js.Program([
|
||||
js.js.statement(
|
||||
'#deferredInitializers[#hash] = #deferredInitializers.current', {
|
||||
'deferredInitializers': deferredInitializersGlobal,
|
||||
'hash': jsStringHash
|
||||
}),
|
||||
js.js.statement(
|
||||
'#deferredInitializers.#eventLog.push({"part": #outputFileName, '
|
||||
'"hash": #hash, "event": "endPartLoad"})',
|
||||
{
|
||||
'deferredInitializers': deferredInitializersGlobal,
|
||||
'hash': jsStringHash,
|
||||
'eventLog': INITIALIZATION_EVENT_LOG,
|
||||
'outputFileName': outputFileJsString,
|
||||
})
|
||||
]);
|
||||
output.add('\n');
|
||||
output.add(js
|
||||
.createCodeBuffer(epilogue, _options,
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
"id": "outputUnit/1",
|
||||
"kind": "outputUnit",
|
||||
"name": "1",
|
||||
"size": 1230,
|
||||
"size": 1426,
|
||||
"filename": "out_1.part.js",
|
||||
"imports": [
|
||||
"lib"
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
"id": "outputUnit/1",
|
||||
"kind": "outputUnit",
|
||||
"name": "1",
|
||||
"size": 952,
|
||||
"size": 1148,
|
||||
"filename": "out_1.part.js",
|
||||
"imports": [
|
||||
"lib1"
|
||||
|
|
Loading…
Reference in a new issue