Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2143)

Unified Diff: pkg/compiler/lib/src/serialization/element_serialization.dart

Issue 2110323003: Support serialization of loadLibrary (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: dartfmt Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/serialization/element_serialization.dart
diff --git a/pkg/compiler/lib/src/serialization/element_serialization.dart b/pkg/compiler/lib/src/serialization/element_serialization.dart
index 7069b51ff565b21f1e0846630d7f7686978132ce..a0ec36e518453a615fdcb9698d059acb3a72100d 100644
--- a/pkg/compiler/lib/src/serialization/element_serialization.dart
+++ b/pkg/compiler/lib/src/serialization/element_serialization.dart
@@ -5,12 +5,14 @@
library dart2js.serialization.elements;
import '../common.dart';
+import '../common/names.dart';
import '../constants/constructors.dart';
import '../constants/expressions.dart';
import '../dart_types.dart';
import '../diagnostics/messages.dart';
import '../elements/elements.dart';
-import '../elements/modelx.dart' show ErroneousElementX;
+import '../elements/modelx.dart'
+ show DeferredLoaderGetterElementX, ErroneousElementX;
import 'constant_serialization.dart';
import 'keys.dart';
import 'modelz.dart';
@@ -51,6 +53,7 @@ enum SerializedElementKind {
IMPORT,
EXPORT,
PREFIX,
+ DEFERRED_LOAD_LIBRARY,
LOCAL_VARIABLE,
EXTERNAL_LIBRARY,
EXTERNAL_LIBRARY_MEMBER,
@@ -69,6 +72,8 @@ const List<ElementSerializer> ELEMENT_SERIALIZERS = const [
const ErrorSerializer(),
const LibrarySerializer(),
const CompilationUnitSerializer(),
+ const PrefixSerializer(),
+ const DeferredLoadLibrarySerializer(),
const ClassSerializer(),
const ConstructorSerializer(),
const FieldSerializer(),
@@ -78,7 +83,6 @@ const List<ElementSerializer> ELEMENT_SERIALIZERS = const [
const ParameterSerializer(),
const ImportSerializer(),
const ExportSerializer(),
- const PrefixSerializer(),
const LocalVariableSerializer(),
];
@@ -500,6 +504,9 @@ class FunctionSerializer implements ElementSerializer {
const FunctionSerializer();
SerializedElementKind getSerializedKind(Element element) {
+ if (element.isDeferredLoaderGetter) {
+ return null;
+ }
if (element.isFunction) {
if (element.isTopLevel) return SerializedElementKind.TOPLEVEL_FUNCTION;
if (element.isStatic) return SerializedElementKind.STATIC_FUNCTION;
@@ -713,10 +720,27 @@ class PrefixSerializer implements ElementSerializer {
encoder.setString(Key.NAME, element.name);
encoder.setElement(Key.LIBRARY, element.library);
encoder.setElement(Key.COMPILATION_UNIT, element.compilationUnit);
- if (element.deferredImport != null) {
+ encoder.setBool(Key.IS_DEFERRED, element.isDeferred);
+ if (element.isDeferred) {
encoder.setElement(Key.IMPORT, element.deferredImport);
+ encoder.setElement(Key.GETTER, element.loadLibrary);
}
- encoder.setBool(Key.IS_DEFERRED, element.isDeferred);
+ }
+}
+
+class DeferredLoadLibrarySerializer implements ElementSerializer {
+ const DeferredLoadLibrarySerializer();
+
+ SerializedElementKind getSerializedKind(Element element) {
+ if (element.isDeferredLoaderGetter) {
+ return SerializedElementKind.DEFERRED_LOAD_LIBRARY;
+ }
+ return null;
+ }
+
+ void serialize(GetterElement element, ObjectEncoder encoder,
+ SerializedElementKind kind) {
+ encoder.setElement(Key.PREFIX, element.enclosingElement);
}
}
@@ -809,6 +833,8 @@ class ElementDeserializer {
return new ExportElementZ(decoder);
case SerializedElementKind.PREFIX:
return new PrefixElementZ(decoder);
+ case SerializedElementKind.DEFERRED_LOAD_LIBRARY:
+ return new DeferredLoaderGetterElementX(decoder.getElement(Key.PREFIX));
case SerializedElementKind.LOCAL_VARIABLE:
return new LocalVariableElementZ(decoder);
case SerializedElementKind.EXTERNAL_LIBRARY:

Powered by Google App Engine
This is Rietveld 408576698