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

Side by Side Diff: pkg/compiler/lib/src/serialization/system.dart

Issue 2007573002: Support multiple serialization sources in DeserializerSystemImpl. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix test. 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.serialization_system; 5 library dart2js.serialization_system;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import '../commandline_options.dart'; 8 import '../commandline_options.dart';
9 import '../common.dart'; 9 import '../common.dart';
10 import '../common/backend_api.dart'; 10 import '../common/backend_api.dart';
(...skipping 10 matching lines...) Expand all
21 import '../universe/world_impact.dart'; 21 import '../universe/world_impact.dart';
22 import '../universe/use.dart'; 22 import '../universe/use.dart';
23 import 'json_serializer.dart'; 23 import 'json_serializer.dart';
24 import 'modelz.dart'; 24 import 'modelz.dart';
25 import 'resolved_ast_serialization.dart'; 25 import 'resolved_ast_serialization.dart';
26 import 'serialization.dart'; 26 import 'serialization.dart';
27 import 'task.dart'; 27 import 'task.dart';
28 28
29 class DeserializerSystemImpl extends DeserializerSystem { 29 class DeserializerSystemImpl extends DeserializerSystem {
30 final Compiler _compiler; 30 final Compiler _compiler;
31 final Deserializer _deserializer; 31 final DeserializationContext deserializationContext;
32 final List<LibraryElement> deserializedLibraries = <LibraryElement>[]; 32 final List<LibraryElement> deserializedLibraries = <LibraryElement>[];
33 final ResolutionImpactDeserializer _resolutionImpactDeserializer; 33 final ResolutionImpactDeserializer _resolutionImpactDeserializer;
34 final ResolvedAstDeserializerPlugin _resolvedAstDeserializer; 34 final ResolvedAstDeserializerPlugin _resolvedAstDeserializer;
35 final ImpactTransformer _impactTransformer; 35 final ImpactTransformer _impactTransformer;
36 36
37 factory DeserializerSystemImpl(Compiler compiler, Deserializer deserializer, 37 factory DeserializerSystemImpl(
38 ImpactTransformer impactTransformer) { 38 Compiler compiler, ImpactTransformer impactTransformer) {
39 List<DeserializerPlugin> plugins = <DeserializerPlugin>[]; 39 DeserializationContext context = new DeserializationContext();
40 DeserializerPlugin backendDeserializer = 40 DeserializerPlugin backendDeserializer =
41 compiler.backend.serialization.deserializer; 41 compiler.backend.serialization.deserializer;
42 deserializer.plugins.add(backendDeserializer); 42 context.plugins.add(backendDeserializer);
43 ResolutionImpactDeserializer resolutionImpactDeserializer = 43 ResolutionImpactDeserializer resolutionImpactDeserializer =
44 new ResolutionImpactDeserializer(backendDeserializer); 44 new ResolutionImpactDeserializer(backendDeserializer);
45 deserializer.plugins.add(resolutionImpactDeserializer); 45 context.plugins.add(resolutionImpactDeserializer);
46 ResolvedAstDeserializerPlugin resolvedAstDeserializer = 46 ResolvedAstDeserializerPlugin resolvedAstDeserializer =
47 new ResolvedAstDeserializerPlugin( 47 new ResolvedAstDeserializerPlugin(
48 compiler.parsingContext, backendDeserializer); 48 compiler.parsingContext, backendDeserializer);
49 deserializer.plugins.add(resolvedAstDeserializer); 49 context.plugins.add(resolvedAstDeserializer);
50 return new DeserializerSystemImpl._( 50 return new DeserializerSystemImpl._(compiler, context, impactTransformer,
51 compiler, 51 resolutionImpactDeserializer, resolvedAstDeserializer);
52 deserializer,
53 impactTransformer,
54 resolutionImpactDeserializer,
55 resolvedAstDeserializer);
56 } 52 }
57 53
58 DeserializerSystemImpl._( 54 DeserializerSystemImpl._(
59 this._compiler, 55 this._compiler,
60 this._deserializer, 56 this.deserializationContext,
61 this._impactTransformer, 57 this._impactTransformer,
62 this._resolutionImpactDeserializer, 58 this._resolutionImpactDeserializer,
63 this._resolvedAstDeserializer); 59 this._resolvedAstDeserializer);
64 60
65 @override 61 @override
66 Future<LibraryElement> readLibrary(Uri resolvedUri) { 62 Future<LibraryElement> readLibrary(Uri resolvedUri) {
67 LibraryElement library = _deserializer.lookupLibrary(resolvedUri); 63 LibraryElement library = deserializationContext.lookupLibrary(resolvedUri);
68 if (library != null) { 64 if (library != null) {
69 deserializedLibraries.add(library); 65 deserializedLibraries.add(library);
70 return Future.forEach(library.compilationUnits, 66 return Future.forEach(library.compilationUnits,
71 (CompilationUnitElement compilationUnit) { 67 (CompilationUnitElement compilationUnit) {
72 ScriptZ script = compilationUnit.script; 68 ScriptZ script = compilationUnit.script;
73 return _compiler 69 return _compiler
74 .readScript(script.readableUri) 70 .readScript(script.readableUri)
75 .then((Script newScript) { 71 .then((Script newScript) {
76 script.file = newScript.file; 72 script.file = newScript.file;
77 _resolvedAstDeserializer.sourceFiles[script.resourceUri] = 73 _resolvedAstDeserializer.sourceFiles[script.resourceUri] =
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } 242 }
247 243
248 @override 244 @override
249 void onElement(Element element, ObjectDecoder getDecoder(String tag)) { 245 void onElement(Element element, ObjectDecoder getDecoder(String tag)) {
250 ObjectDecoder decoder = getDecoder(RESOLVED_AST_TAG); 246 ObjectDecoder decoder = getDecoder(RESOLVED_AST_TAG);
251 if (decoder != null) { 247 if (decoder != null) {
252 _decoderMap[element] = decoder; 248 _decoderMap[element] = decoder;
253 } 249 }
254 } 250 }
255 } 251 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/serialization/serialization.dart ('k') | pkg/compiler/lib/src/serialization/task.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698