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

Unified Diff: tests/compiler/dart2js/serialization/helper.dart

Issue 1957343002: Register NativeBehavior from WorldImpact. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comment. Created 4 years, 7 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: tests/compiler/dart2js/serialization/helper.dart
diff --git a/tests/compiler/dart2js/serialization/helper.dart b/tests/compiler/dart2js/serialization/helper.dart
index c7719b317580624c2a5d7a80f5162c1473791e1e..095915bd8fd0cdd9459a8160ada0ab448c2f882f 100644
--- a/tests/compiler/dart2js/serialization/helper.dart
+++ b/tests/compiler/dart2js/serialization/helper.dart
@@ -103,11 +103,14 @@ Serializer serialize(
assert(compiler.serialization.supportSerialization);
Serializer serializer = new Serializer();
- serializer.plugins.add(compiler.backend.serialization.serializer);
- serializer.plugins.add(new ResolutionImpactSerializer(compiler.resolution));
+ SerializerPlugin backendSerializer =
+ compiler.backend.serialization.serializer;
+ serializer.plugins.add(backendSerializer);
+ serializer.plugins.add(new ResolutionImpactSerializer(
+ compiler.resolution, backendSerializer));
if (serializeResolvedAst) {
- serializer.plugins.add(
- new ResolvedAstSerializerPlugin(compiler.resolution, compiler.backend));
+ serializer.plugins.add(new ResolvedAstSerializerPlugin(
+ compiler.resolution, backendSerializer));
}
for (LibraryElement library in libraries) {
@@ -137,28 +140,34 @@ const String WORLD_IMPACT_TAG = 'worldImpact';
class ResolutionImpactSerializer extends SerializerPlugin {
final Resolution resolution;
+ final SerializerPlugin nativeDataSerializer;
- ResolutionImpactSerializer(this.resolution);
+ ResolutionImpactSerializer(this.resolution, this.nativeDataSerializer);
@override
void onElement(Element element, ObjectEncoder createEncoder(String tag)) {
if (resolution.hasBeenResolved(element)) {
ResolutionImpact impact = resolution.getResolutionImpact(element);
ObjectEncoder encoder = createEncoder(WORLD_IMPACT_TAG);
- new ImpactSerializer(element, encoder).serialize(impact);
+ new ImpactSerializer(element, encoder, nativeDataSerializer)
+ .serialize(impact);
}
}
}
class ResolutionImpactDeserializer extends DeserializerPlugin {
Map<Element, ResolutionImpact> impactMap = <Element, ResolutionImpact>{};
+ final DeserializerPlugin nativeDataDeserializer;
+
+ ResolutionImpactDeserializer(this.nativeDataDeserializer);
@override
void onElement(Element element, ObjectDecoder getDecoder(String tag)) {
ObjectDecoder decoder = getDecoder(WORLD_IMPACT_TAG);
if (decoder != null) {
impactMap[element] =
- ImpactDeserializer.deserializeImpact(element, decoder);
+ ImpactDeserializer.deserializeImpact(
+ element, decoder, nativeDataDeserializer);
}
}
}
@@ -167,34 +176,53 @@ class _DeserializerSystem extends DeserializerSystem {
final Compiler _compiler;
final Deserializer _deserializer;
final List<LibraryElement> deserializedLibraries = <LibraryElement>[];
- final ResolutionImpactDeserializer _resolutionImpactDeserializer =
- new ResolutionImpactDeserializer();
+ final ResolutionImpactDeserializer _resolutionImpactDeserializer;
final ResolvedAstDeserializerPlugin _resolvedAstDeserializer;
final ImpactTransformer _impactTransformer;
- final bool _deserializeResolvedAst;
+ final bool deserializeResolvedAst;
- _DeserializerSystem(
+ factory _DeserializerSystem(
Compiler compiler,
- this._deserializer,
- this._impactTransformer,
- {bool deserializeResolvedAst: false})
- : this._compiler = compiler,
- this._deserializeResolvedAst = deserializeResolvedAst,
- this._resolvedAstDeserializer = deserializeResolvedAst
- ? new ResolvedAstDeserializerPlugin(
- compiler.parsingContext, compiler.backend) : null {
- _deserializer.plugins.add(_resolutionImpactDeserializer);
- if (_deserializeResolvedAst) {
- _deserializer.plugins.add(_resolvedAstDeserializer);
+ Deserializer deserializer,
+ ImpactTransformer impactTransformer,
+ {bool deserializeResolvedAst: false}) {
+ List<DeserializerPlugin> plugins = <DeserializerPlugin>[];
+ DeserializerPlugin backendDeserializer =
+ compiler.backend.serialization.deserializer;
+ deserializer.plugins.add(backendDeserializer);
+ ResolutionImpactDeserializer resolutionImpactDeserializer =
+ new ResolutionImpactDeserializer(backendDeserializer);
+ deserializer.plugins.add(resolutionImpactDeserializer);
+ ResolvedAstDeserializerPlugin resolvedAstDeserializer;
+ if (deserializeResolvedAst) {
+ resolvedAstDeserializer = new ResolvedAstDeserializerPlugin(
+ compiler.parsingContext, backendDeserializer);
+ deserializer.plugins.add(resolvedAstDeserializer);
}
+ return new _DeserializerSystem._(
+ compiler,
+ deserializer,
+ impactTransformer,
+ resolutionImpactDeserializer,
+ resolvedAstDeserializer,
+ deserializeResolvedAst: deserializeResolvedAst);
}
+ _DeserializerSystem._(
+ this._compiler,
+ this._deserializer,
+ this._impactTransformer,
+ this._resolutionImpactDeserializer,
+ this._resolvedAstDeserializer,
+ {this.deserializeResolvedAst: false});
+
+
@override
Future<LibraryElement> readLibrary(Uri resolvedUri) {
LibraryElement library = _deserializer.lookupLibrary(resolvedUri);
if (library != null) {
deserializedLibraries.add(library);
- if (_deserializeResolvedAst) {
+ if (deserializeResolvedAst) {
return Future.forEach(library.compilationUnits,
(CompilationUnitElement compilationUnit) {
ScriptZ script = compilationUnit.script;
@@ -274,9 +302,9 @@ const String RESOLVED_AST_TAG = 'resolvedAst';
class ResolvedAstSerializerPlugin extends SerializerPlugin {
final Resolution resolution;
- final Backend backend;
+ final SerializerPlugin nativeDataSerializer;
- ResolvedAstSerializerPlugin(this.resolution, this.backend);
+ ResolvedAstSerializerPlugin(this.resolution, this.nativeDataSerializer);
@override
void onElement(Element element, ObjectEncoder createEncoder(String tag)) {
@@ -290,14 +318,14 @@ class ResolvedAstSerializerPlugin extends SerializerPlugin {
new ResolvedAstSerializer(
objectEncoder,
resolvedAst,
- backend.serialization.serializer).serialize();
+ nativeDataSerializer).serialize();
}
}
}
class ResolvedAstDeserializerPlugin extends DeserializerPlugin {
final ParsingContext parsingContext;
- final Backend backend;
+ final DeserializerPlugin nativeDataDeserializer;
final Map<Uri, SourceFile> sourceFiles = <Uri, SourceFile>{};
Map<ExecutableElement, ResolvedAst> _resolvedAstMap =
@@ -306,7 +334,8 @@ class ResolvedAstDeserializerPlugin extends DeserializerPlugin {
<MemberElement, ObjectDecoder>{};
Map<Uri, Token> beginTokenMap = <Uri, Token>{};
- ResolvedAstDeserializerPlugin(this.parsingContext, this.backend);
+ ResolvedAstDeserializerPlugin(
+ this.parsingContext, this.nativeDataDeserializer);
bool hasResolvedAst(ExecutableElement element) {
return _resolvedAstMap.containsKey(element) ||
@@ -320,7 +349,7 @@ class ResolvedAstDeserializerPlugin extends DeserializerPlugin {
if (decoder != null) {
ResolvedAstDeserializer.deserialize(
element.memberContext, decoder, parsingContext, findToken,
- backend.serialization.deserializer,
+ nativeDataDeserializer,
_resolvedAstMap);
_decoderMap.remove(element);
resolvedAst = _resolvedAstMap[element];
« no previous file with comments | « pkg/compiler/lib/src/serialization/impact_serialization.dart ('k') | tests/compiler/dart2js/serialization/model_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698