| 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 |