| 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 // 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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 Flags.useKernel, | 68 Flags.useKernel, |
| 69 Flags.enableAssertMessage | 69 Flags.enableAssertMessage |
| 70 ]); | 70 ]); |
| 71 ElementResolutionWorldBuilder.useInstantiationMap = true; | 71 ElementResolutionWorldBuilder.useInstantiationMap = true; |
| 72 compiler.resolution.retainCachesForTesting = true; | 72 compiler.resolution.retainCachesForTesting = true; |
| 73 await compiler.run(entryPoint); | 73 await compiler.run(entryPoint); |
| 74 compiler.resolutionWorldBuilder.closeWorld(compiler.reporter); | 74 compiler.resolutionWorldBuilder.closeWorld(compiler.reporter); |
| 75 | 75 |
| 76 KernelWorldBuilder worldBuilder = new KernelWorldBuilder( | 76 KernelWorldBuilder worldBuilder = new KernelWorldBuilder( |
| 77 compiler.reporter, compiler.backend.kernelTask.program); | 77 compiler.reporter, compiler.backend.kernelTask.program); |
| 78 List list = createKernelResolutionEnqueuerListener( | 78 List list = createKernelResolutionEnqueuerListener(compiler.options, |
| 79 compiler.options, compiler.deferredLoadTask, worldBuilder); | 79 compiler.reporter, compiler.deferredLoadTask, worldBuilder); |
| 80 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0]; | 80 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0]; |
| 81 ImpactTransformer impactTransformer = list[1]; | 81 ImpactTransformer impactTransformer = list[1]; |
| 82 ResolutionEnqueuer enqueuer = new ResolutionEnqueuer( | 82 ResolutionEnqueuer enqueuer = new ResolutionEnqueuer( |
| 83 compiler.enqueuer, | 83 compiler.enqueuer, |
| 84 compiler.options, | 84 compiler.options, |
| 85 compiler.reporter, | 85 compiler.reporter, |
| 86 const TreeShakingEnqueuerStrategy(), | 86 const TreeShakingEnqueuerStrategy(), |
| 87 resolutionEnqueuerListener, | 87 resolutionEnqueuerListener, |
| 88 new KernelResolutionWorldBuilder( | 88 new KernelResolutionWorldBuilder( |
| 89 worldBuilder.elementEnvironment, | 89 worldBuilder.elementEnvironment, |
| 90 worldBuilder.commonElements, | 90 worldBuilder.commonElements, |
| 91 new NativeBasicDataImpl(), | 91 new NativeBasicDataImpl(), |
| 92 const OpenWorldStrategy()), | 92 const OpenWorldStrategy()), |
| 93 new KernelWorkItemBuilder(worldBuilder, impactTransformer), | 93 new KernelWorkItemBuilder(worldBuilder, impactTransformer), |
| 94 'enqueuer from kelements'); | 94 'enqueuer from kelements'); |
| 95 | 95 |
| 96 computeClosedWorld( | 96 computeClosedWorld( |
| 97 compiler.reporter, enqueuer, worldBuilder.elementEnvironment); | 97 compiler.reporter, enqueuer, worldBuilder.elementEnvironment); |
| 98 }); | 98 }); |
| 99 } | 99 } |
| 100 | 100 |
| 101 List createKernelResolutionEnqueuerListener(CompilerOptions options, | 101 List createKernelResolutionEnqueuerListener( |
| 102 DeferredLoadTask deferredLoadTask, KernelWorldBuilder worldBuilder) { | 102 CompilerOptions options, |
| 103 DiagnosticReporter reporter, |
| 104 DeferredLoadTask deferredLoadTask, |
| 105 KernelWorldBuilder worldBuilder) { |
| 103 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; | 106 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; |
| 104 CommonElements commonElements = worldBuilder.commonElements; | 107 CommonElements commonElements = worldBuilder.commonElements; |
| 105 BackendHelpers helpers = | 108 BackendHelpers helpers = |
| 106 new BackendHelpers(elementEnvironment, commonElements); | 109 new BackendHelpers(elementEnvironment, commonElements); |
| 107 BackendImpacts impacts = new BackendImpacts(options, commonElements, helpers); | 110 BackendImpacts impacts = new BackendImpacts(options, commonElements, helpers); |
| 108 | 111 |
| 109 // TODO(johnniwinther): Create Kernel based implementations for these: | 112 // TODO(johnniwinther): Create Kernel based implementations for these: |
| 110 NativeBasicData nativeBasicData = new NativeBasicDataImpl(); | 113 NativeBasicData nativeBasicData = new NativeBasicDataImpl(); |
| 111 RuntimeTypesNeedBuilder rtiNeedBuilder = new RuntimeTypesNeedBuilderImpl(); | 114 RuntimeTypesNeedBuilder rtiNeedBuilder = new RuntimeTypesNeedBuilderImpl(); |
| 112 MirrorsDataBuilder mirrorsDataBuilder = new MirrorsDataBuilderImpl(); | 115 MirrorsDataBuilder mirrorsDataBuilder = new MirrorsDataBuilderImpl(); |
| 113 CustomElementsResolutionAnalysis customElementsResolutionAnalysis = | 116 CustomElementsResolutionAnalysis customElementsResolutionAnalysis = |
| 114 new CustomElementsResolutionAnalysisImpl(); | 117 new CustomElementsResolutionAnalysisImpl(); |
| 115 LookupMapResolutionAnalysis lookupMapResolutionAnalysis = | |
| 116 new LookupMapResolutionAnalysisImpl(); | |
| 117 MirrorsResolutionAnalysis mirrorsResolutionAnalysis = | 118 MirrorsResolutionAnalysis mirrorsResolutionAnalysis = |
| 118 new MirrorsResolutionAnalysisImpl(); | 119 new MirrorsResolutionAnalysisImpl(); |
| 119 | 120 |
| 121 LookupMapResolutionAnalysis lookupMapResolutionAnalysis = |
| 122 new LookupMapResolutionAnalysis(reporter, elementEnvironment); |
| 120 BackendClasses backendClasses = new JavaScriptBackendClasses( | 123 BackendClasses backendClasses = new JavaScriptBackendClasses( |
| 121 elementEnvironment, helpers, nativeBasicData); | 124 elementEnvironment, helpers, nativeBasicData); |
| 122 InterceptorDataBuilder interceptorDataBuilder = | 125 InterceptorDataBuilder interceptorDataBuilder = |
| 123 new InterceptorDataBuilderImpl( | 126 new InterceptorDataBuilderImpl( |
| 124 nativeBasicData, helpers, elementEnvironment, commonElements); | 127 nativeBasicData, helpers, elementEnvironment, commonElements); |
| 125 BackendUsageBuilder backendUsageBuilder = | 128 BackendUsageBuilder backendUsageBuilder = |
| 126 new BackendUsageBuilderImpl(commonElements, helpers); | 129 new BackendUsageBuilderImpl(commonElements, helpers); |
| 127 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry( | 130 NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry( |
| 128 helpers, new KernelNoSuchMethodResolver(worldBuilder)); | 131 helpers, new KernelNoSuchMethodResolver(worldBuilder)); |
| 129 NativeResolutionEnqueuer nativeResolutionEnqueuer = | 132 NativeResolutionEnqueuer nativeResolutionEnqueuer = |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 @override | 268 @override |
| 266 void registerStaticUse(MemberEntity element) {} | 269 void registerStaticUse(MemberEntity element) {} |
| 267 | 270 |
| 268 @override | 271 @override |
| 269 void registerInstantiatedClass(ClassEntity classElement) {} | 272 void registerInstantiatedClass(ClassEntity classElement) {} |
| 270 | 273 |
| 271 @override | 274 @override |
| 272 void registerTypeLiteral(DartType type) {} | 275 void registerTypeLiteral(DartType type) {} |
| 273 } | 276 } |
| 274 | 277 |
| 275 class LookupMapResolutionAnalysisImpl implements LookupMapResolutionAnalysis { | |
| 276 @override | |
| 277 FieldEntity lookupMapVersionVariable; | |
| 278 @override | |
| 279 LibraryEntity lookupMapLibrary; | |
| 280 | |
| 281 @override | |
| 282 WorldImpact flush() { | |
| 283 // TODO(johnniwinther): Implement this. | |
| 284 return const WorldImpact(); | |
| 285 } | |
| 286 | |
| 287 @override | |
| 288 void init(LibraryEntity library) {} | |
| 289 } | |
| 290 | |
| 291 class MirrorsResolutionAnalysisImpl implements MirrorsResolutionAnalysis { | 278 class MirrorsResolutionAnalysisImpl implements MirrorsResolutionAnalysis { |
| 292 @override | 279 @override |
| 293 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) {} | 280 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) {} |
| 294 | 281 |
| 295 @override | 282 @override |
| 296 MirrorsCodegenAnalysis close() { | 283 MirrorsCodegenAnalysis close() { |
| 297 throw new UnimplementedError('MirrorsResolutionAnalysisImpl.close'); | 284 throw new UnimplementedError('MirrorsResolutionAnalysisImpl.close'); |
| 298 } | 285 } |
| 299 | 286 |
| 300 @override | 287 @override |
| (...skipping 18 matching lines...) Expand all Loading... |
| 319 final MemberEntity element; | 306 final MemberEntity element; |
| 320 | 307 |
| 321 KernelWorkItem(this._worldBuilder, this._impactTransformer, this.element); | 308 KernelWorkItem(this._worldBuilder, this._impactTransformer, this.element); |
| 322 | 309 |
| 323 @override | 310 @override |
| 324 WorldImpact run() { | 311 WorldImpact run() { |
| 325 ResolutionImpact impact = _worldBuilder.computeWorldImpact(element); | 312 ResolutionImpact impact = _worldBuilder.computeWorldImpact(element); |
| 326 return _impactTransformer.transformResolutionImpact(impact); | 313 return _impactTransformer.transformResolutionImpact(impact); |
| 327 } | 314 } |
| 328 } | 315 } |
| OLD | NEW |