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

Side by Side Diff: tests/compiler/dart2js/kernel/closed_world2_test.dart

Issue 2829033002: Rename KernelWorldBuilder to KernelElementBuilder (Closed)
Patch Set: Rename to KernelToElementMap Created 3 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 // Partial test that the closed world computed from [WorldImpact]s derived from 5 // Partial test that the closed world computed from [WorldImpact]s derived from
6 // kernel is equivalent to the original computed from resolution. 6 // kernel is equivalent to the original computed from resolution.
7 library dart2js.kernel.closed_world2_test; 7 library dart2js.kernel.closed_world2_test;
8 8
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:compiler/src/closure.dart'; 10 import 'package:compiler/src/closure.dart';
(...skipping 17 matching lines...) Expand all
28 import 'package:compiler/src/js_backend/native_data.dart'; 28 import 'package:compiler/src/js_backend/native_data.dart';
29 import 'package:compiler/src/js_backend/impact_transformer.dart'; 29 import 'package:compiler/src/js_backend/impact_transformer.dart';
30 import 'package:compiler/src/js_backend/interceptor_data.dart'; 30 import 'package:compiler/src/js_backend/interceptor_data.dart';
31 import 'package:compiler/src/js_backend/lookup_map_analysis.dart'; 31 import 'package:compiler/src/js_backend/lookup_map_analysis.dart';
32 import 'package:compiler/src/js_backend/mirrors_analysis.dart'; 32 import 'package:compiler/src/js_backend/mirrors_analysis.dart';
33 import 'package:compiler/src/js_backend/mirrors_data.dart'; 33 import 'package:compiler/src/js_backend/mirrors_data.dart';
34 import 'package:compiler/src/js_backend/no_such_method_registry.dart'; 34 import 'package:compiler/src/js_backend/no_such_method_registry.dart';
35 import 'package:compiler/src/js_backend/resolution_listener.dart'; 35 import 'package:compiler/src/js_backend/resolution_listener.dart';
36 import 'package:compiler/src/js_backend/type_variable_handler.dart'; 36 import 'package:compiler/src/js_backend/type_variable_handler.dart';
37 import 'package:compiler/src/native/enqueue.dart'; 37 import 'package:compiler/src/native/enqueue.dart';
38 import 'package:compiler/src/kernel/world_builder.dart'; 38 import 'package:compiler/src/kernel/element_map.dart';
39 import 'package:compiler/src/options.dart'; 39 import 'package:compiler/src/options.dart';
40 import 'package:compiler/src/universe/world_builder.dart'; 40 import 'package:compiler/src/universe/world_builder.dart';
41 import 'package:compiler/src/universe/world_impact.dart'; 41 import 'package:compiler/src/universe/world_impact.dart';
42 import 'package:compiler/src/world.dart'; 42 import 'package:compiler/src/world.dart';
43 import '../memory_compiler.dart'; 43 import '../memory_compiler.dart';
44 import '../serialization/helper.dart'; 44 import '../serialization/helper.dart';
45 import '../serialization/model_test_helper.dart'; 45 import '../serialization/model_test_helper.dart';
46 import '../serialization/test_helper.dart'; 46 import '../serialization/test_helper.dart';
47 47
48 import 'closed_world_test.dart'; 48 import 'closed_world_test.dart';
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 memorySourceFiles: memorySourceFiles, 89 memorySourceFiles: memorySourceFiles,
90 options: [ 90 options: [
91 Flags.analyzeAll, 91 Flags.analyzeAll,
92 Flags.useKernel, 92 Flags.useKernel,
93 Flags.enableAssertMessage 93 Flags.enableAssertMessage
94 ]); 94 ]);
95 await compiler.run(entryPoint); 95 await compiler.run(entryPoint);
96 compiler.resolutionWorldBuilder.closeWorld(); 96 compiler.resolutionWorldBuilder.closeWorld();
97 97
98 print('---- closed world from kernel ------------------------------------'); 98 print('---- closed world from kernel ------------------------------------');
99 KernelWorldBuilder worldBuilder = new KernelWorldBuilder( 99 KernelToElementMap elementMap = new KernelToElementMap(
100 compiler.reporter, compiler.backend.kernelTask.program); 100 compiler.reporter, compiler.backend.kernelTask.program);
101 KernelEquivalence equivalence = new KernelEquivalence(worldBuilder); 101 KernelEquivalence equivalence = new KernelEquivalence(elementMap);
102 NativeBasicData nativeBasicData = computeNativeBasicData(worldBuilder); 102 NativeBasicData nativeBasicData = computeNativeBasicData(elementMap);
103 checkNativeBasicData( 103 checkNativeBasicData(
104 compiler.backend.nativeBasicData, nativeBasicData, equivalence); 104 compiler.backend.nativeBasicData, nativeBasicData, equivalence);
105 List list = createKernelResolutionEnqueuerListener( 105 List list = createKernelResolutionEnqueuerListener(
106 compiler.options, 106 compiler.options,
107 compiler.reporter, 107 compiler.reporter,
108 compiler.deferredLoadTask, 108 compiler.deferredLoadTask,
109 worldBuilder, 109 elementMap,
110 nativeBasicData); 110 nativeBasicData);
111 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0]; 111 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0];
112 BackendUsageBuilder backendUsageBuilder2 = list[1]; 112 BackendUsageBuilder backendUsageBuilder2 = list[1];
113 ImpactTransformer impactTransformer = list[2]; 113 ImpactTransformer impactTransformer = list[2];
114 ResolutionEnqueuer enqueuer2 = new ResolutionEnqueuer( 114 ResolutionEnqueuer enqueuer2 = new ResolutionEnqueuer(
115 compiler.enqueuer, 115 compiler.enqueuer,
116 compiler.options, 116 compiler.options,
117 compiler.reporter, 117 compiler.reporter,
118 const TreeShakingEnqueuerStrategy(), 118 const TreeShakingEnqueuerStrategy(),
119 resolutionEnqueuerListener, 119 resolutionEnqueuerListener,
120 new KernelResolutionWorldBuilder( 120 new KernelResolutionWorldBuilder(
121 worldBuilder, nativeBasicData, const OpenWorldStrategy()), 121 elementMap, nativeBasicData, const OpenWorldStrategy()),
122 new KernelWorkItemBuilder(worldBuilder, impactTransformer), 122 new KernelWorkItemBuilder(elementMap, impactTransformer),
123 'enqueuer from kelements'); 123 'enqueuer from kelements');
124 ClosedWorld closedWorld2 = computeClosedWorld( 124 ClosedWorld closedWorld2 = computeClosedWorld(
125 compiler.reporter, enqueuer2, worldBuilder.elementEnvironment); 125 compiler.reporter, enqueuer2, elementMap.elementEnvironment);
126 BackendUsage backendUsage2 = backendUsageBuilder2.close(); 126 BackendUsage backendUsage2 = backendUsageBuilder2.close();
127 checkBackendUsage(backendUsage1, backendUsage2, equivalence); 127 checkBackendUsage(backendUsage1, backendUsage2, equivalence);
128 128
129 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2, 129 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2,
130 elementEquivalence: equivalence.entityEquivalence, 130 elementEquivalence: equivalence.entityEquivalence,
131 typeEquivalence: (ResolutionDartType a, DartType b) { 131 typeEquivalence: (ResolutionDartType a, DartType b) {
132 return equivalence.typeEquivalence(unalias(a), b); 132 return equivalence.typeEquivalence(unalias(a), b);
133 }, elementFilter: elementFilter, verbose: arguments.verbose); 133 }, elementFilter: elementFilter, verbose: arguments.verbose);
134 134
135 checkClosedWorlds(closedWorld1, closedWorld2, equivalence.entityEquivalence, 135 checkClosedWorlds(closedWorld1, closedWorld2, equivalence.entityEquivalence,
136 verbose: arguments.verbose); 136 verbose: arguments.verbose);
137 }); 137 });
138 } 138 }
139 139
140 List createKernelResolutionEnqueuerListener( 140 List createKernelResolutionEnqueuerListener(
141 CompilerOptions options, 141 CompilerOptions options,
142 DiagnosticReporter reporter, 142 DiagnosticReporter reporter,
143 DeferredLoadTask deferredLoadTask, 143 DeferredLoadTask deferredLoadTask,
144 KernelWorldBuilder worldBuilder, 144 KernelToElementMap elementMap,
145 NativeBasicData nativeBasicData) { 145 NativeBasicData nativeBasicData) {
146 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; 146 ElementEnvironment elementEnvironment = elementMap.elementEnvironment;
147 CommonElements commonElements = worldBuilder.commonElements; 147 CommonElements commonElements = elementMap.commonElements;
148 BackendImpacts impacts = new BackendImpacts(options, commonElements); 148 BackendImpacts impacts = new BackendImpacts(options, commonElements);
149 149
150 // TODO(johnniwinther): Create Kernel based implementations for these: 150 // TODO(johnniwinther): Create Kernel based implementations for these:
151 RuntimeTypesNeedBuilder rtiNeedBuilder = new RuntimeTypesNeedBuilderImpl(); 151 RuntimeTypesNeedBuilder rtiNeedBuilder = new RuntimeTypesNeedBuilderImpl();
152 MirrorsDataBuilder mirrorsDataBuilder = new MirrorsDataBuilderImpl(); 152 MirrorsDataBuilder mirrorsDataBuilder = new MirrorsDataBuilderImpl();
153 CustomElementsResolutionAnalysis customElementsResolutionAnalysis = 153 CustomElementsResolutionAnalysis customElementsResolutionAnalysis =
154 new CustomElementsResolutionAnalysisImpl(); 154 new CustomElementsResolutionAnalysisImpl();
155 MirrorsResolutionAnalysis mirrorsResolutionAnalysis = 155 MirrorsResolutionAnalysis mirrorsResolutionAnalysis =
156 new MirrorsResolutionAnalysisImpl(); 156 new MirrorsResolutionAnalysisImpl();
157 LookupMapResolutionAnalysis lookupMapResolutionAnalysis = 157 LookupMapResolutionAnalysis lookupMapResolutionAnalysis =
158 new LookupMapResolutionAnalysis(reporter, elementEnvironment); 158 new LookupMapResolutionAnalysis(reporter, elementEnvironment);
159 159
160 InterceptorDataBuilder interceptorDataBuilder = 160 InterceptorDataBuilder interceptorDataBuilder =
161 new InterceptorDataBuilderImpl( 161 new InterceptorDataBuilderImpl(
162 nativeBasicData, elementEnvironment, commonElements); 162 nativeBasicData, elementEnvironment, commonElements);
163 BackendUsageBuilder backendUsageBuilder = 163 BackendUsageBuilder backendUsageBuilder =
164 new BackendUsageBuilderImpl(commonElements); 164 new BackendUsageBuilderImpl(commonElements);
165 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry( 165 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry(
166 commonElements, new KernelNoSuchMethodResolver(worldBuilder)); 166 commonElements, new KernelNoSuchMethodResolver(elementMap));
167 NativeResolutionEnqueuer nativeResolutionEnqueuer = 167 NativeResolutionEnqueuer nativeResolutionEnqueuer =
168 new NativeResolutionEnqueuer(options, elementEnvironment, commonElements, 168 new NativeResolutionEnqueuer(options, elementEnvironment, commonElements,
169 backendUsageBuilder, new KernelNativeClassResolver(worldBuilder)); 169 backendUsageBuilder, new KernelNativeClassResolver(elementMap));
170 170
171 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener( 171 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener(
172 options, 172 options,
173 elementEnvironment, 173 elementEnvironment,
174 commonElements, 174 commonElements,
175 impacts, 175 impacts,
176 nativeBasicData, 176 nativeBasicData,
177 interceptorDataBuilder, 177 interceptorDataBuilder,
178 backendUsageBuilder, 178 backendUsageBuilder,
179 rtiNeedBuilder, 179 rtiNeedBuilder,
(...skipping 16 matching lines...) Expand all
196 nativeResolutionEnqueuer, 196 nativeResolutionEnqueuer,
197 backendUsageBuilder, 197 backendUsageBuilder,
198 mirrorsDataBuilder, 198 mirrorsDataBuilder,
199 customElementsResolutionAnalysis, 199 customElementsResolutionAnalysis,
200 rtiNeedBuilder); 200 rtiNeedBuilder);
201 return [listener, backendUsageBuilder, transformer]; 201 return [listener, backendUsageBuilder, transformer];
202 } 202 }
203 203
204 /// Computes that NativeBasicData for the libraries in [worldBuilder]. 204 /// Computes that NativeBasicData for the libraries in [worldBuilder].
205 /// TODO(johnniwinther): Use [KernelAnnotationProcessor] instead. 205 /// TODO(johnniwinther): Use [KernelAnnotationProcessor] instead.
206 NativeBasicData computeNativeBasicData(KernelWorldBuilder worldBuilder) { 206 NativeBasicData computeNativeBasicData(KernelToElementMap elementMap) {
207 NativeBasicDataBuilderImpl builder = new NativeBasicDataBuilderImpl(); 207 NativeBasicDataBuilderImpl builder = new NativeBasicDataBuilderImpl();
208 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; 208 ElementEnvironment elementEnvironment = elementMap.elementEnvironment;
209 for (LibraryEntity library in elementEnvironment.libraries) { 209 for (LibraryEntity library in elementEnvironment.libraries) {
210 if (library.canonicalUri.scheme == 'dart') { 210 if (library.canonicalUri.scheme == 'dart') {
211 new KernelAnnotationProcessor(worldBuilder) 211 new KernelAnnotationProcessor(elementMap)
212 .extractNativeAnnotations(library, builder); 212 .extractNativeAnnotations(library, builder);
213 } 213 }
214 } 214 }
215 return builder.close(elementEnvironment); 215 return builder.close(elementEnvironment);
216 } 216 }
217 217
218 class RuntimeTypesNeedBuilderImpl implements RuntimeTypesNeedBuilder { 218 class RuntimeTypesNeedBuilderImpl implements RuntimeTypesNeedBuilder {
219 @override 219 @override
220 void registerClassUsingTypeVariableExpression(ClassEntity cls) {} 220 void registerClassUsingTypeVariableExpression(ClassEntity cls) {}
221 221
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 @override 287 @override
288 MirrorsCodegenAnalysis close() { 288 MirrorsCodegenAnalysis close() {
289 throw new UnimplementedError('MirrorsResolutionAnalysisImpl.close'); 289 throw new UnimplementedError('MirrorsResolutionAnalysisImpl.close');
290 } 290 }
291 291
292 @override 292 @override
293 void onResolutionComplete() {} 293 void onResolutionComplete() {}
294 } 294 }
295 295
296 class KernelWorkItemBuilder implements WorkItemBuilder { 296 class KernelWorkItemBuilder implements WorkItemBuilder {
297 final KernelWorldBuilder _worldBuilder; 297 final KernelToElementMap _worldBuilder;
298 final ImpactTransformer _impactTransformer; 298 final ImpactTransformer _impactTransformer;
299 299
300 KernelWorkItemBuilder(this._worldBuilder, this._impactTransformer); 300 KernelWorkItemBuilder(this._worldBuilder, this._impactTransformer);
301 301
302 @override 302 @override
303 WorkItem createWorkItem(MemberEntity entity) { 303 WorkItem createWorkItem(MemberEntity entity) {
304 return new KernelWorkItem(_worldBuilder, _impactTransformer, entity); 304 return new KernelWorkItem(_worldBuilder, _impactTransformer, entity);
305 } 305 }
306 } 306 }
307 307
308 class KernelWorkItem implements ResolutionWorkItem { 308 class KernelWorkItem implements ResolutionWorkItem {
309 final KernelWorldBuilder _worldBuilder; 309 final KernelToElementMap _worldBuilder;
310 final ImpactTransformer _impactTransformer; 310 final ImpactTransformer _impactTransformer;
311 final MemberEntity element; 311 final MemberEntity element;
312 312
313 KernelWorkItem(this._worldBuilder, this._impactTransformer, this.element); 313 KernelWorkItem(this._worldBuilder, this._impactTransformer, this.element);
314 314
315 @override 315 @override
316 WorldImpact run() { 316 WorldImpact run() {
317 ResolutionImpact impact = _worldBuilder.computeWorldImpact(element); 317 ResolutionImpact impact = _worldBuilder.computeWorldImpact(element);
318 return _impactTransformer.transformResolutionImpact(impact); 318 return _impactTransformer.transformResolutionImpact(impact);
319 } 319 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 usage2.isInvokeOnUsed); 380 usage2.isInvokeOnUsed);
381 check(usage1, usage2, 'isRuntimeTypeUsed', usage1.isRuntimeTypeUsed, 381 check(usage1, usage2, 'isRuntimeTypeUsed', usage1.isRuntimeTypeUsed,
382 usage2.isRuntimeTypeUsed); 382 usage2.isRuntimeTypeUsed);
383 check(usage1, usage2, 'isIsolateInUse', usage1.isIsolateInUse, 383 check(usage1, usage2, 'isIsolateInUse', usage1.isIsolateInUse,
384 usage2.isIsolateInUse); 384 usage2.isIsolateInUse);
385 check(usage1, usage2, 'isFunctionApplyUsed', usage1.isFunctionApplyUsed, 385 check(usage1, usage2, 'isFunctionApplyUsed', usage1.isFunctionApplyUsed,
386 usage2.isFunctionApplyUsed); 386 usage2.isFunctionApplyUsed);
387 check(usage1, usage2, 'isNoSuchMethodUsed', usage1.isNoSuchMethodUsed, 387 check(usage1, usage2, 'isNoSuchMethodUsed', usage1.isNoSuchMethodUsed,
388 usage2.isNoSuchMethodUsed); 388 usage2.isNoSuchMethodUsed);
389 } 389 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/dill_loader_test.dart ('k') | tests/compiler/dart2js/kernel/impact_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698