[dart2js] Reland deferred-serialization flag

Change-Id: I5774a271b4197945682439de6fe59771895547ef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/251882
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Nate Biggs <natebiggs@google.com>
This commit is contained in:
Nate Biggs 2022-07-19 18:02:06 +00:00 committed by Commit Bot
parent 5459fc133f
commit f7afab742a
3 changed files with 241 additions and 3 deletions

View file

@ -104,11 +104,11 @@ class FeatureOptions {
/// [FeatureOption]s which default to enabled.
late final List<FeatureOption> shipping = [
useContentSecurityPolicy,
deferredSerialization,
];
/// [FeatureOption]s which default to disabled.
late final List<FeatureOption> canary = [
deferredSerialization,
writeUtf8,
newDumpInfo,
simpleAsyncToFuture,

View file

@ -4,7 +4,122 @@
// @dart = 2.7
/*library:
/*spec.library:
constant=[
{
"id": "constant/B.C_Deferred = A.lib__funky$closure();\n",
"kind": "constant",
"name": "",
"size": 39,
"outputUnit": "outputUnit/1",
"code": "B.C_Deferred = A.lib__funky$closure();\n"
},
{
"id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n",
"kind": "constant",
"name": "",
"size": 131,
"outputUnit": "outputUnit/main",
"code": "B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n"
},
{
"id": "constant/B.C__RootZone = new A._RootZone();\n",
"kind": "constant",
"name": "",
"size": 35,
"outputUnit": "outputUnit/main",
"code": "B.C__RootZone = new A._RootZone();\n"
},
{
"id": "constant/B.C__StringStackTrace = new A._StringStackTrace();\n",
"kind": "constant",
"name": "",
"size": 51,
"outputUnit": "outputUnit/main",
"code": "B.C__StringStackTrace = new A._StringStackTrace();\n"
},
{
"id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
"kind": "constant",
"name": "",
"size": 49,
"outputUnit": "outputUnit/main",
"code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
},
{
"id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
"kind": "constant",
"name": "",
"size": 41,
"outputUnit": "outputUnit/main",
"code": "B.JSArray_methods = J.JSArray.prototype;\n"
},
{
"id": "constant/B.JSInt_methods = J.JSInt.prototype;\n",
"kind": "constant",
"name": "",
"size": 37,
"outputUnit": "outputUnit/main",
"code": "B.JSInt_methods = J.JSInt.prototype;\n"
},
{
"id": "constant/B.JSString_methods = J.JSString.prototype;\n",
"kind": "constant",
"name": "",
"size": 43,
"outputUnit": "outputUnit/main",
"code": "B.JSString_methods = J.JSString.prototype;\n"
},
{
"id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
"kind": "constant",
"name": "",
"size": 59,
"outputUnit": "outputUnit/main",
"code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
}],
deferredFiles=[{
"main.dart": {
"name": "<unnamed>",
"imports": {
"lib": [
"out_1.part.js"
]
}
}
}],
dependencies=[{}],
library=[{
"id": "library/memory:sdk/tests/web/native/main.dart::",
"kind": "library",
"name": "<unnamed>",
"size": 301,
"children": [
"function/memory:sdk/tests/web/native/main.dart::main"
],
"canonicalUri": "memory:sdk/tests/web/native/main.dart"
}],
outputUnits=[
{
"id": "outputUnit/1",
"kind": "outputUnit",
"name": "1",
"size": 1087,
"filename": "out_1.part.js",
"imports": [
"lib"
]
},
{
"id": "outputUnit/main",
"kind": "outputUnit",
"name": "main",
"filename": "out",
"imports": []
}]
*/
/*canary.library:
constant=[
{
"id": "constant/B.C_Deferred = A.lib__funky$closure();\n",

View file

@ -2,7 +2,130 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/*library:
/*spec.library:
constant=[
{
"id": "constant/B.C_A = new A.A();\n",
"kind": "constant",
"name": "",
"size": 19,
"outputUnit": "outputUnit/1",
"code": "B.C_A = new A.A();\n"
},
{
"id": "constant/B.C_Deferred = B.C_A;\n",
"kind": "constant",
"name": "",
"size": 22,
"outputUnit": "outputUnit/1",
"code": "B.C_Deferred = B.C_A;\n"
},
{
"id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n",
"kind": "constant",
"name": "",
"size": 131,
"outputUnit": "outputUnit/main",
"code": "B.C_JS_CONST = function getTagFallback(o) {\n var s = Object.prototype.toString.call(o);\n return s.substring(8, s.length - 1);\n};\n"
},
{
"id": "constant/B.C__RootZone = new A._RootZone();\n",
"kind": "constant",
"name": "",
"size": 35,
"outputUnit": "outputUnit/main",
"code": "B.C__RootZone = new A._RootZone();\n"
},
{
"id": "constant/B.C__StringStackTrace = new A._StringStackTrace();\n",
"kind": "constant",
"name": "",
"size": 51,
"outputUnit": "outputUnit/main",
"code": "B.C__StringStackTrace = new A._StringStackTrace();\n"
},
{
"id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
"kind": "constant",
"name": "",
"size": 49,
"outputUnit": "outputUnit/main",
"code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
},
{
"id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
"kind": "constant",
"name": "",
"size": 41,
"outputUnit": "outputUnit/main",
"code": "B.JSArray_methods = J.JSArray.prototype;\n"
},
{
"id": "constant/B.JSInt_methods = J.JSInt.prototype;\n",
"kind": "constant",
"name": "",
"size": 37,
"outputUnit": "outputUnit/main",
"code": "B.JSInt_methods = J.JSInt.prototype;\n"
},
{
"id": "constant/B.JSString_methods = J.JSString.prototype;\n",
"kind": "constant",
"name": "",
"size": 43,
"outputUnit": "outputUnit/main",
"code": "B.JSString_methods = J.JSString.prototype;\n"
},
{
"id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
"kind": "constant",
"name": "",
"size": 59,
"outputUnit": "outputUnit/main",
"code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
}],
deferredFiles=[{
"main.dart": {
"name": "<unnamed>",
"imports": {
"lib1": [
"out_1.part.js"
]
}
}
}],
dependencies=[{}],
library=[{
"id": "library/memory:sdk/tests/web/native/main.dart::",
"kind": "library",
"name": "<unnamed>",
"size": 857,
"children": [
"function/memory:sdk/tests/web/native/main.dart::main"
],
"canonicalUri": "memory:sdk/tests/web/native/main.dart"
}],
outputUnits=[
{
"id": "outputUnit/1",
"kind": "outputUnit",
"name": "1",
"size": 870,
"filename": "out_1.part.js",
"imports": [
"lib1"
]
},
{
"id": "outputUnit/main",
"kind": "outputUnit",
"name": "main",
"filename": "out",
"imports": []
}]
*/
/*canary.library:
constant=[
{
"id": "constant/B.C_A = new A.A();\n",