OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |