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

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

Issue 2004833003: Support multiple resolution inputs from command line. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix and check library separation 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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.task; 5 library dart2js.serialization.task;
6 6
7 import 'dart:async' show EventSink, Future; 7 import 'dart:async' show EventSink, Future;
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/resolution.dart' show ResolutionImpact, ResolutionWorkItem; 9 import '../common/resolution.dart' show ResolutionImpact, ResolutionWorkItem;
10 import '../common/tasks.dart' show CompilerTask; 10 import '../common/tasks.dart' show CompilerTask;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 } 77 }
78 78
79 ResolvedAst getResolvedAst(ExecutableElement element) { 79 ResolvedAst getResolvedAst(ExecutableElement element) {
80 return deserializer != null ? deserializer.getResolvedAst(element) : null; 80 return deserializer != null ? deserializer.getResolvedAst(element) : null;
81 } 81 }
82 82
83 Serializer createSerializer(Iterable<LibraryElement> libraries) { 83 Serializer createSerializer(Iterable<LibraryElement> libraries) {
84 return measure(() { 84 return measure(() {
85 assert(supportSerialization); 85 assert(supportSerialization);
86 86
87 Serializer serializer = new Serializer(); 87 Serializer serializer = new Serializer(
88 shouldInclude: (e) => libraries.contains(e.library));
88 SerializerPlugin backendSerializer = 89 SerializerPlugin backendSerializer =
89 compiler.backend.serialization.serializer; 90 compiler.backend.serialization.serializer;
90 serializer.plugins.add(backendSerializer); 91 serializer.plugins.add(backendSerializer);
91 serializer.plugins.add(new ResolutionImpactSerializer( 92 serializer.plugins.add(new ResolutionImpactSerializer(
92 compiler.resolution, backendSerializer)); 93 compiler.resolution, backendSerializer));
93 serializer.plugins.add(new ResolvedAstSerializerPlugin( 94 serializer.plugins.add(new ResolvedAstSerializerPlugin(
94 compiler.resolution, backendSerializer)); 95 compiler.resolution, backendSerializer));
95 96
96 for (LibraryElement library in libraries) { 97 for (LibraryElement library in libraries) {
97 serializer.serialize(library); 98 serializer.serialize(library);
98 } 99 }
99 return serializer; 100 return serializer;
100 }); 101 });
101 } 102 }
102 103
103 void serializeToSink( 104 void serializeToSink(
104 EventSink<String> sink, Iterable<LibraryElement> libraries) { 105 EventSink<String> sink, Iterable<LibraryElement> libraries) {
105 measure(() { 106 measure(() {
106 sink 107 sink
107 ..add(createSerializer(libraries) 108 ..add(createSerializer(libraries)
108 .toText(const JsonSerializationEncoder())) 109 .toText(const JsonSerializationEncoder()))
109 ..close(); 110 ..close();
110 }); 111 });
111 } 112 }
112 113
113 void deserializeFromText(String serializedData) { 114 void deserializeFromText(Uri sourceUri, String serializedData) {
114 measure(() { 115 measure(() {
115 if (deserializer == null) { 116 if (deserializer == null) {
116 deserializer = new DeserializerSystemImpl( 117 deserializer = new DeserializerSystemImpl(
117 compiler, compiler.backend.impactTransformer); 118 compiler, compiler.backend.impactTransformer);
118 } 119 }
119 DeserializerSystemImpl deserializerImpl = deserializer; 120 DeserializerSystemImpl deserializerImpl = deserializer;
120 DeserializationContext context = deserializerImpl.deserializationContext; 121 DeserializationContext context = deserializerImpl.deserializationContext;
121 Deserializer dataDeserializer = new Deserializer.fromText( 122 Deserializer dataDeserializer = new Deserializer.fromText(
122 context, serializedData, const JsonSerializationDecoder()); 123 context, sourceUri, serializedData, const JsonSerializationDecoder());
123 context.deserializers.add(dataDeserializer); 124 context.deserializers.add(dataDeserializer);
124 }); 125 });
125 } 126 }
126 } 127 }
127 128
128 /// A [ResolutionWorkItem] for a deserialized element. 129 /// A [ResolutionWorkItem] for a deserialized element.
129 /// 130 ///
130 /// This will not resolve the element but only compute the [WorldImpact]. 131 /// This will not resolve the element but only compute the [WorldImpact].
131 class DeserializedResolutionWorkItem implements ResolutionWorkItem { 132 class DeserializedResolutionWorkItem implements ResolutionWorkItem {
132 final Element element; 133 final Element element;
(...skipping 19 matching lines...) Expand all
152 /// elements. 153 /// elements.
153 abstract class DeserializerSystem { 154 abstract class DeserializerSystem {
154 Future<LibraryElement> readLibrary(Uri resolvedUri); 155 Future<LibraryElement> readLibrary(Uri resolvedUri);
155 bool isDeserialized(Element element); 156 bool isDeserialized(Element element);
156 bool hasResolvedAst(ExecutableElement element); 157 bool hasResolvedAst(ExecutableElement element);
157 ResolvedAst getResolvedAst(ExecutableElement element); 158 ResolvedAst getResolvedAst(ExecutableElement element);
158 bool hasResolutionImpact(Element element); 159 bool hasResolutionImpact(Element element);
159 ResolutionImpact getResolutionImpact(Element element); 160 ResolutionImpact getResolutionImpact(Element element);
160 WorldImpact computeWorldImpact(Element element); 161 WorldImpact computeWorldImpact(Element element);
161 } 162 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698