OLD | NEW |
1 // Copyright (c) 2016, 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'; |
11 import 'package:compiler/src/commandline_options.dart'; | 11 import 'package:compiler/src/commandline_options.dart'; |
12 import 'package:compiler/src/common.dart'; | 12 import 'package:compiler/src/common.dart'; |
13 import 'package:compiler/src/common_elements.dart'; | 13 import 'package:compiler/src/common_elements.dart'; |
14 import 'package:compiler/src/common/backend_api.dart'; | 14 import 'package:compiler/src/common/backend_api.dart'; |
15 import 'package:compiler/src/common/resolution.dart'; | 15 import 'package:compiler/src/common/resolution.dart'; |
16 import 'package:compiler/src/common/work.dart'; | 16 import 'package:compiler/src/common/work.dart'; |
17 import 'package:compiler/src/compiler.dart'; | 17 import 'package:compiler/src/compiler.dart'; |
18 import 'package:compiler/src/deferred_load.dart'; | 18 import 'package:compiler/src/deferred_load.dart'; |
19 import 'package:compiler/src/elements/resolution_types.dart'; | 19 import 'package:compiler/src/elements/resolution_types.dart'; |
20 import 'package:compiler/src/elements/elements.dart'; | 20 import 'package:compiler/src/elements/elements.dart'; |
21 import 'package:compiler/src/elements/entities.dart'; | 21 import 'package:compiler/src/elements/entities.dart'; |
22 import 'package:compiler/src/elements/types.dart'; | 22 import 'package:compiler/src/elements/types.dart'; |
23 import 'package:compiler/src/enqueue.dart'; | 23 import 'package:compiler/src/enqueue.dart'; |
24 import 'package:compiler/src/js_backend/backend.dart'; | 24 import 'package:compiler/src/js_backend/backend.dart'; |
25 import 'package:compiler/src/js_backend/backend_helpers.dart'; | |
26 import 'package:compiler/src/js_backend/backend_impact.dart'; | 25 import 'package:compiler/src/js_backend/backend_impact.dart'; |
27 import 'package:compiler/src/js_backend/backend_usage.dart'; | 26 import 'package:compiler/src/js_backend/backend_usage.dart'; |
28 import 'package:compiler/src/js_backend/custom_elements_analysis.dart'; | 27 import 'package:compiler/src/js_backend/custom_elements_analysis.dart'; |
29 import 'package:compiler/src/js_backend/native_data.dart'; | 28 import 'package:compiler/src/js_backend/native_data.dart'; |
30 import 'package:compiler/src/js_backend/impact_transformer.dart'; | 29 import 'package:compiler/src/js_backend/impact_transformer.dart'; |
31 import 'package:compiler/src/js_backend/interceptor_data.dart'; | 30 import 'package:compiler/src/js_backend/interceptor_data.dart'; |
32 import 'package:compiler/src/js_backend/lookup_map_analysis.dart'; | 31 import 'package:compiler/src/js_backend/lookup_map_analysis.dart'; |
33 import 'package:compiler/src/js_backend/mirrors_analysis.dart'; | 32 import 'package:compiler/src/js_backend/mirrors_analysis.dart'; |
34 import 'package:compiler/src/js_backend/mirrors_data.dart'; | 33 import 'package:compiler/src/js_backend/mirrors_data.dart'; |
35 import 'package:compiler/src/js_backend/no_such_method_registry.dart'; | 34 import 'package:compiler/src/js_backend/no_such_method_registry.dart'; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 | 94 |
96 computeClosedWorld( | 95 computeClosedWorld( |
97 compiler.reporter, enqueuer, worldBuilder.elementEnvironment); | 96 compiler.reporter, enqueuer, worldBuilder.elementEnvironment); |
98 }); | 97 }); |
99 } | 98 } |
100 | 99 |
101 List createKernelResolutionEnqueuerListener(CompilerOptions options, | 100 List createKernelResolutionEnqueuerListener(CompilerOptions options, |
102 DeferredLoadTask deferredLoadTask, KernelWorldBuilder worldBuilder) { | 101 DeferredLoadTask deferredLoadTask, KernelWorldBuilder worldBuilder) { |
103 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; | 102 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; |
104 CommonElements commonElements = worldBuilder.commonElements; | 103 CommonElements commonElements = worldBuilder.commonElements; |
105 BackendHelpers helpers = | 104 BackendImpacts impacts = new BackendImpacts(options, commonElements); |
106 new BackendHelpers(elementEnvironment, commonElements); | |
107 BackendImpacts impacts = new BackendImpacts(options, commonElements, helpers); | |
108 | 105 |
109 // TODO(johnniwinther): Create Kernel based implementations for these: | 106 // TODO(johnniwinther): Create Kernel based implementations for these: |
110 NativeBasicData nativeBasicData = new NativeBasicDataImpl(); | 107 NativeBasicData nativeBasicData = new NativeBasicDataImpl(); |
111 RuntimeTypesNeedBuilder rtiNeedBuilder = new RuntimeTypesNeedBuilderImpl(); | 108 RuntimeTypesNeedBuilder rtiNeedBuilder = new RuntimeTypesNeedBuilderImpl(); |
112 MirrorsDataBuilder mirrorsDataBuilder = new MirrorsDataBuilderImpl(); | 109 MirrorsDataBuilder mirrorsDataBuilder = new MirrorsDataBuilderImpl(); |
113 CustomElementsResolutionAnalysis customElementsResolutionAnalysis = | 110 CustomElementsResolutionAnalysis customElementsResolutionAnalysis = |
114 new CustomElementsResolutionAnalysisImpl(); | 111 new CustomElementsResolutionAnalysisImpl(); |
115 LookupMapResolutionAnalysis lookupMapResolutionAnalysis = | 112 LookupMapResolutionAnalysis lookupMapResolutionAnalysis = |
116 new LookupMapResolutionAnalysisImpl(); | 113 new LookupMapResolutionAnalysisImpl(); |
117 MirrorsResolutionAnalysis mirrorsResolutionAnalysis = | 114 MirrorsResolutionAnalysis mirrorsResolutionAnalysis = |
118 new MirrorsResolutionAnalysisImpl(); | 115 new MirrorsResolutionAnalysisImpl(); |
119 | 116 |
120 BackendClasses backendClasses = new JavaScriptBackendClasses( | 117 BackendClasses backendClasses = new JavaScriptBackendClasses( |
121 elementEnvironment, helpers, nativeBasicData); | 118 elementEnvironment, commonElements, nativeBasicData); |
122 InterceptorDataBuilder interceptorDataBuilder = | 119 InterceptorDataBuilder interceptorDataBuilder = |
123 new InterceptorDataBuilderImpl( | 120 new InterceptorDataBuilderImpl( |
124 nativeBasicData, helpers, elementEnvironment, commonElements); | 121 nativeBasicData, elementEnvironment, commonElements); |
125 BackendUsageBuilder backendUsageBuilder = | 122 BackendUsageBuilder backendUsageBuilder = |
126 new BackendUsageBuilderImpl(commonElements, helpers); | 123 new BackendUsageBuilderImpl(commonElements); |
127 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry( | 124 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry( |
128 helpers, new KernelNoSuchMethodResolver(worldBuilder)); | 125 commonElements, new KernelNoSuchMethodResolver(worldBuilder)); |
129 NativeResolutionEnqueuer nativeResolutionEnqueuer = | 126 NativeResolutionEnqueuer nativeResolutionEnqueuer = |
130 new NativeResolutionEnqueuer( | 127 new NativeResolutionEnqueuer( |
131 options, | 128 options, |
132 elementEnvironment, | 129 elementEnvironment, |
133 commonElements, | 130 commonElements, |
134 helpers, | |
135 backendClasses, | 131 backendClasses, |
136 backendUsageBuilder, | 132 backendUsageBuilder, |
137 new KernelNativeClassResolver(worldBuilder)); | 133 new KernelNativeClassResolver(worldBuilder)); |
138 | 134 |
139 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener( | 135 ResolutionEnqueuerListener listener = new ResolutionEnqueuerListener( |
140 options, | 136 options, |
141 elementEnvironment, | 137 elementEnvironment, |
142 commonElements, | 138 commonElements, |
143 helpers, | |
144 impacts, | 139 impacts, |
145 backendClasses, | 140 backendClasses, |
146 nativeBasicData, | 141 nativeBasicData, |
147 interceptorDataBuilder, | 142 interceptorDataBuilder, |
148 backendUsageBuilder, | 143 backendUsageBuilder, |
149 rtiNeedBuilder, | 144 rtiNeedBuilder, |
150 mirrorsDataBuilder, | 145 mirrorsDataBuilder, |
151 noSuchMethodRegistry, | 146 noSuchMethodRegistry, |
152 customElementsResolutionAnalysis, | 147 customElementsResolutionAnalysis, |
153 lookupMapResolutionAnalysis, | 148 lookupMapResolutionAnalysis, |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 class RuntimeTypesNeedBuilderImpl implements RuntimeTypesNeedBuilder { | 204 class RuntimeTypesNeedBuilderImpl implements RuntimeTypesNeedBuilder { |
210 @override | 205 @override |
211 void registerClassUsingTypeVariableExpression(ClassEntity cls) {} | 206 void registerClassUsingTypeVariableExpression(ClassEntity cls) {} |
212 | 207 |
213 @override | 208 @override |
214 RuntimeTypesNeed computeRuntimeTypesNeed( | 209 RuntimeTypesNeed computeRuntimeTypesNeed( |
215 ResolutionWorldBuilder resolutionWorldBuilder, | 210 ResolutionWorldBuilder resolutionWorldBuilder, |
216 ClosedWorld closedWorld, | 211 ClosedWorld closedWorld, |
217 DartTypes types, | 212 DartTypes types, |
218 CommonElements commonElements, | 213 CommonElements commonElements, |
219 BackendHelpers helpers, | |
220 BackendUsage backendUsage, | 214 BackendUsage backendUsage, |
221 {bool enableTypeAssertions}) { | 215 {bool enableTypeAssertions}) { |
222 throw new UnimplementedError( | 216 throw new UnimplementedError( |
223 'RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed'); | 217 'RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed'); |
224 } | 218 } |
225 | 219 |
226 @override | 220 @override |
227 void registerRtiDependency(ClassEntity element, ClassEntity dependency) {} | 221 void registerRtiDependency(ClassEntity element, ClassEntity dependency) {} |
228 } | 222 } |
229 | 223 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 final MemberEntity element; | 313 final MemberEntity element; |
320 | 314 |
321 KernelWorkItem(this._worldBuilder, this._impactTransformer, this.element); | 315 KernelWorkItem(this._worldBuilder, this._impactTransformer, this.element); |
322 | 316 |
323 @override | 317 @override |
324 WorldImpact run() { | 318 WorldImpact run() { |
325 ResolutionImpact impact = _worldBuilder.computeWorldImpact(element); | 319 ResolutionImpact impact = _worldBuilder.computeWorldImpact(element); |
326 return _impactTransformer.transformResolutionImpact(impact); | 320 return _impactTransformer.transformResolutionImpact(impact); |
327 } | 321 } |
328 } | 322 } |
OLD | NEW |