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

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

Issue 2814453005: Merge CommonElements and BackendHelpers! (Closed)
Patch Set: merge with head Created 3 years, 8 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 // Tests that the closed world computed from [WorldImpact]s derived from kernel 5 // Tests that the closed world computed from [WorldImpact]s derived from kernel
6 // is equivalent to the original computed from resolution. 6 // is equivalent to the original computed from resolution.
7 library dart2js.kernel.closed_world_test; 7 library dart2js.kernel.closed_world_test;
8 8
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:compiler/src/commandline_options.dart'; 10 import 'package:compiler/src/commandline_options.dart';
11 import 'package:compiler/src/common.dart'; 11 import 'package:compiler/src/common.dart';
12 import 'package:compiler/src/common_elements.dart'; 12 import 'package:compiler/src/common_elements.dart';
13 import 'package:compiler/src/common/backend_api.dart'; 13 import 'package:compiler/src/common/backend_api.dart';
14 import 'package:compiler/src/common/resolution.dart'; 14 import 'package:compiler/src/common/resolution.dart';
15 import 'package:compiler/src/compiler.dart'; 15 import 'package:compiler/src/compiler.dart';
16 import 'package:compiler/src/deferred_load.dart'; 16 import 'package:compiler/src/deferred_load.dart';
17 import 'package:compiler/src/elements/resolution_types.dart'; 17 import 'package:compiler/src/elements/resolution_types.dart';
18 import 'package:compiler/src/elements/elements.dart'; 18 import 'package:compiler/src/elements/elements.dart';
19 import 'package:compiler/src/enqueue.dart'; 19 import 'package:compiler/src/enqueue.dart';
20 import 'package:compiler/src/js_backend/backend.dart'; 20 import 'package:compiler/src/js_backend/backend.dart';
21 import 'package:compiler/src/js_backend/backend_helpers.dart';
22 import 'package:compiler/src/js_backend/backend_impact.dart'; 21 import 'package:compiler/src/js_backend/backend_impact.dart';
23 import 'package:compiler/src/js_backend/backend_usage.dart'; 22 import 'package:compiler/src/js_backend/backend_usage.dart';
24 import 'package:compiler/src/js_backend/custom_elements_analysis.dart'; 23 import 'package:compiler/src/js_backend/custom_elements_analysis.dart';
25 import 'package:compiler/src/js_backend/native_data.dart'; 24 import 'package:compiler/src/js_backend/native_data.dart';
26 import 'package:compiler/src/js_backend/interceptor_data.dart'; 25 import 'package:compiler/src/js_backend/interceptor_data.dart';
27 import 'package:compiler/src/js_backend/lookup_map_analysis.dart'; 26 import 'package:compiler/src/js_backend/lookup_map_analysis.dart';
28 import 'package:compiler/src/js_backend/mirrors_analysis.dart'; 27 import 'package:compiler/src/js_backend/mirrors_analysis.dart';
29 import 'package:compiler/src/js_backend/mirrors_data.dart'; 28 import 'package:compiler/src/js_backend/mirrors_data.dart';
30 import 'package:compiler/src/js_backend/no_such_method_registry.dart'; 29 import 'package:compiler/src/js_backend/no_such_method_registry.dart';
31 import 'package:compiler/src/js_backend/resolution_listener.dart'; 30 import 'package:compiler/src/js_backend/resolution_listener.dart';
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 verbose: arguments.verbose); 136 verbose: arguments.verbose);
138 }); 137 });
139 } 138 }
140 139
141 EnqueuerListener createResolutionEnqueuerListener(Compiler compiler) { 140 EnqueuerListener createResolutionEnqueuerListener(Compiler compiler) {
142 JavaScriptBackend backend = compiler.backend; 141 JavaScriptBackend backend = compiler.backend;
143 return new ResolutionEnqueuerListener( 142 return new ResolutionEnqueuerListener(
144 compiler.options, 143 compiler.options,
145 compiler.elementEnvironment, 144 compiler.elementEnvironment,
146 compiler.commonElements, 145 compiler.commonElements,
147 backend.helpers,
148 backend.impacts, 146 backend.impacts,
149 backend.backendClasses, 147 backend.backendClasses,
150 backend.nativeBasicData, 148 backend.nativeBasicData,
151 backend.interceptorDataBuilder, 149 backend.interceptorDataBuilder,
152 backend.backendUsageBuilder, 150 backend.backendUsageBuilder,
153 backend.rtiNeedBuilder, 151 backend.rtiNeedBuilder,
154 backend.mirrorsDataBuilder, 152 backend.mirrorsDataBuilder,
155 backend.noSuchMethodRegistry, 153 backend.noSuchMethodRegistry,
156 backend.customElementsResolutionAnalysis, 154 backend.customElementsResolutionAnalysis,
157 backend.lookupMapResolutionAnalysis, 155 backend.lookupMapResolutionAnalysis,
158 backend.mirrorsResolutionAnalysis, 156 backend.mirrorsResolutionAnalysis,
159 new TypeVariableResolutionAnalysis(compiler.elementEnvironment, 157 new TypeVariableResolutionAnalysis(compiler.elementEnvironment,
160 backend.impacts, backend.backendUsageBuilder), 158 backend.impacts, backend.backendUsageBuilder),
161 backend.nativeResolutionEnqueuer, 159 backend.nativeResolutionEnqueuer,
162 compiler.deferredLoadTask, 160 compiler.deferredLoadTask,
163 backend.kernelTask); 161 backend.kernelTask);
164 } 162 }
165 163
166 EnqueuerListener createKernelResolutionEnqueuerListener(CompilerOptions options, 164 EnqueuerListener createKernelResolutionEnqueuerListener(CompilerOptions options,
167 DeferredLoadTask deferredLoadTask, KernelWorldBuilder worldBuilder) { 165 DeferredLoadTask deferredLoadTask, KernelWorldBuilder worldBuilder) {
168 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; 166 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment;
169 CommonElements commonElements = worldBuilder.commonElements; 167 CommonElements commonElements = worldBuilder.commonElements;
170 BackendHelpers helpers = 168 BackendImpacts impacts = new BackendImpacts(options, commonElements);
171 new BackendHelpers(elementEnvironment, commonElements);
172 BackendImpacts impacts = new BackendImpacts(options, commonElements, helpers);
173 169
174 // TODO(johnniwinther): Create Kernel based implementations for these: 170 // TODO(johnniwinther): Create Kernel based implementations for these:
175 NativeBasicData nativeBasicData; 171 NativeBasicData nativeBasicData;
176 RuntimeTypesNeedBuilder rtiNeedBuilder; 172 RuntimeTypesNeedBuilder rtiNeedBuilder;
177 MirrorsDataBuilder mirrorsDataBuilder; 173 MirrorsDataBuilder mirrorsDataBuilder;
178 CustomElementsResolutionAnalysis customElementsResolutionAnalysis; 174 CustomElementsResolutionAnalysis customElementsResolutionAnalysis;
179 LookupMapResolutionAnalysis lookupMapResolutionAnalysis; 175 LookupMapResolutionAnalysis lookupMapResolutionAnalysis;
180 MirrorsResolutionAnalysis mirrorsResolutionAnalysis; 176 MirrorsResolutionAnalysis mirrorsResolutionAnalysis;
181 177
182 BackendClasses backendClasses = new JavaScriptBackendClasses( 178 BackendClasses backendClasses = new JavaScriptBackendClasses(
183 elementEnvironment, helpers, nativeBasicData); 179 elementEnvironment, commonElements, nativeBasicData);
184 InterceptorDataBuilder interceptorDataBuilder = 180 InterceptorDataBuilder interceptorDataBuilder =
185 new InterceptorDataBuilderImpl( 181 new InterceptorDataBuilderImpl(
186 nativeBasicData, helpers, elementEnvironment, commonElements); 182 nativeBasicData, elementEnvironment, commonElements);
187 BackendUsageBuilder backendUsageBuilder = 183 BackendUsageBuilder backendUsageBuilder =
188 new BackendUsageBuilderImpl(commonElements, helpers); 184 new BackendUsageBuilderImpl(commonElements);
189 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry( 185 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry(
190 helpers, new KernelNoSuchMethodResolver(worldBuilder)); 186 commonElements, new KernelNoSuchMethodResolver(worldBuilder));
191 NativeResolutionEnqueuer nativeResolutionEnqueuer = 187 NativeResolutionEnqueuer nativeResolutionEnqueuer =
192 new NativeResolutionEnqueuer( 188 new NativeResolutionEnqueuer(
193 options, 189 options,
194 elementEnvironment, 190 elementEnvironment,
195 commonElements, 191 commonElements,
196 helpers,
197 backendClasses, 192 backendClasses,
198 backendUsageBuilder, 193 backendUsageBuilder,
199 new KernelNativeClassResolver(worldBuilder)); 194 new KernelNativeClassResolver(worldBuilder));
200 195
201 return new ResolutionEnqueuerListener( 196 return new ResolutionEnqueuerListener(
202 options, 197 options,
203 elementEnvironment, 198 elementEnvironment,
204 commonElements, 199 commonElements,
205 helpers,
206 impacts, 200 impacts,
207 backendClasses, 201 backendClasses,
208 nativeBasicData, 202 nativeBasicData,
209 interceptorDataBuilder, 203 interceptorDataBuilder,
210 backendUsageBuilder, 204 backendUsageBuilder,
211 rtiNeedBuilder, 205 rtiNeedBuilder,
212 mirrorsDataBuilder, 206 mirrorsDataBuilder,
213 noSuchMethodRegistry, 207 noSuchMethodRegistry,
214 customElementsResolutionAnalysis, 208 customElementsResolutionAnalysis,
215 lookupMapResolutionAnalysis, 209 lookupMapResolutionAnalysis,
216 mirrorsResolutionAnalysis, 210 mirrorsResolutionAnalysis,
217 new TypeVariableResolutionAnalysis( 211 new TypeVariableResolutionAnalysis(
218 elementEnvironment, impacts, backendUsageBuilder), 212 elementEnvironment, impacts, backendUsageBuilder),
219 nativeResolutionEnqueuer, 213 nativeResolutionEnqueuer,
220 deferredLoadTask); 214 deferredLoadTask);
221 } 215 }
222 216
223 ClosedWorld computeClosedWorld(Compiler compiler, ResolutionEnqueuer enqueuer) { 217 ClosedWorld computeClosedWorld(Compiler compiler, ResolutionEnqueuer enqueuer) {
224 enqueuer.open(const ImpactStrategy(), compiler.mainFunction, 218 enqueuer.open(const ImpactStrategy(), compiler.mainFunction,
225 compiler.libraryLoader.libraries); 219 compiler.libraryLoader.libraries);
226 enqueuer.forEach((work) { 220 enqueuer.forEach((work) {
227 MemberElement element = work.element; 221 MemberElement element = work.element;
228 ResolutionImpact resolutionImpact = build(compiler, element.resolvedAst); 222 ResolutionImpact resolutionImpact = build(compiler, element.resolvedAst);
229 WorldImpact worldImpact = compiler.backend.impactTransformer 223 WorldImpact worldImpact = compiler.backend.impactTransformer
230 .transformResolutionImpact(enqueuer, resolutionImpact); 224 .transformResolutionImpact(enqueuer, resolutionImpact);
231 enqueuer.applyImpact(worldImpact, impactSource: element); 225 enqueuer.applyImpact(worldImpact, impactSource: element);
232 }); 226 });
233 return enqueuer.worldBuilder.closeWorld(compiler.reporter); 227 return enqueuer.worldBuilder.closeWorld(compiler.reporter);
234 } 228 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698