| OLD | NEW |
| 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 library dart2js.kernel.frontend_strategy; | 5 library dart2js.kernel.frontend_strategy; |
| 6 | 6 |
| 7 import '../../compiler_new.dart' as api; | 7 import '../../compiler_new.dart' as api; |
| 8 import '../common.dart'; | 8 import '../common.dart'; |
| 9 import '../common_elements.dart'; | 9 import '../common_elements.dart'; |
| 10 import '../common/backend_api.dart'; | 10 import '../common/backend_api.dart'; |
| 11 import '../common/resolution.dart'; | 11 import '../common/resolution.dart'; |
| 12 import '../common/tasks.dart'; | 12 import '../common/tasks.dart'; |
| 13 import '../common/work.dart'; | 13 import '../common/work.dart'; |
| 14 import '../elements/elements.dart'; | 14 import '../elements/elements.dart'; |
| 15 import '../elements/entities.dart'; | 15 import '../elements/entities.dart'; |
| 16 import '../elements/types.dart'; | 16 import '../elements/types.dart'; |
| 17 import '../environment.dart' as env; | 17 import '../environment.dart' as env; |
| 18 import '../enqueue.dart'; | 18 import '../enqueue.dart'; |
| 19 import '../frontend_strategy.dart'; | 19 import '../frontend_strategy.dart'; |
| 20 import '../js_backend/backend.dart'; | 20 import '../js_backend/backend.dart'; |
| 21 import '../js_backend/backend_usage.dart'; | 21 import '../js_backend/backend_usage.dart'; |
| 22 import '../js_backend/interceptor_data.dart'; | 22 import '../js_backend/interceptor_data.dart'; |
| 23 import '../js_backend/mirrors_analysis.dart'; | 23 import '../js_backend/mirrors_analysis.dart'; |
| 24 import '../js_backend/mirrors_data.dart'; | 24 import '../js_backend/mirrors_data.dart'; |
| 25 import '../js_backend/native_data.dart'; | 25 import '../js_backend/native_data.dart'; |
| 26 import '../js_backend/no_such_method_registry.dart'; | 26 import '../js_backend/no_such_method_registry.dart'; |
| 27 import '../js_backend/runtime_types.dart'; | 27 import '../js_backend/runtime_types.dart'; |
| 28 import '../js_model/closure.dart' show ClosureModel; | 28 import '../js_model/closure.dart' show ScopeModel; |
| 29 import '../library_loader.dart'; | 29 import '../library_loader.dart'; |
| 30 import '../native/enqueue.dart' show NativeResolutionEnqueuer; | 30 import '../native/enqueue.dart' show NativeResolutionEnqueuer; |
| 31 import '../native/resolver.dart'; | 31 import '../native/resolver.dart'; |
| 32 import '../options.dart'; | 32 import '../options.dart'; |
| 33 import '../serialization/task.dart'; | 33 import '../serialization/task.dart'; |
| 34 import '../patch_parser.dart'; | 34 import '../patch_parser.dart'; |
| 35 import '../resolved_uri_translator.dart'; | 35 import '../resolved_uri_translator.dart'; |
| 36 import '../universe/world_builder.dart'; | 36 import '../universe/world_builder.dart'; |
| 37 import '../universe/world_impact.dart'; | 37 import '../universe/world_impact.dart'; |
| 38 import '../world.dart'; | 38 import '../world.dart'; |
| 39 import 'element_map.dart'; | 39 import 'element_map.dart'; |
| 40 import 'element_map_impl.dart'; | 40 import 'element_map_impl.dart'; |
| 41 | 41 |
| 42 /// Front end strategy that loads '.dill' files and builds a resolved element | 42 /// Front end strategy that loads '.dill' files and builds a resolved element |
| 43 /// model from kernel IR nodes. | 43 /// model from kernel IR nodes. |
| 44 class KernelFrontEndStrategy extends FrontendStrategyBase { | 44 class KernelFrontEndStrategy extends FrontendStrategyBase { |
| 45 CompilerOptions _options; | 45 CompilerOptions _options; |
| 46 KernelToElementMapForImpactImpl _elementMap; | 46 KernelToElementMapForImpactImpl _elementMap; |
| 47 | 47 |
| 48 KernelAnnotationProcessor _annotationProcesser; | 48 KernelAnnotationProcessor _annotationProcesser; |
| 49 | 49 |
| 50 final Map<MemberEntity, ClosureModel> closureModels = | 50 final Map<MemberEntity, ScopeModel> closureModels = |
| 51 <MemberEntity, ClosureModel>{}; | 51 <MemberEntity, ScopeModel>{}; |
| 52 | 52 |
| 53 KernelFrontEndStrategy( | 53 KernelFrontEndStrategy( |
| 54 this._options, DiagnosticReporter reporter, env.Environment environment) { | 54 this._options, DiagnosticReporter reporter, env.Environment environment) { |
| 55 _elementMap = | 55 _elementMap = |
| 56 new KernelToElementMapForImpactImpl(reporter, environment, this); | 56 new KernelToElementMapForImpactImpl(reporter, environment, this); |
| 57 } | 57 } |
| 58 | 58 |
| 59 @override | 59 @override |
| 60 LibraryLoaderTask createLibraryLoader( | 60 LibraryLoaderTask createLibraryLoader( |
| 61 ResolvedUriTranslator uriTranslator, | 61 ResolvedUriTranslator uriTranslator, |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 @override | 148 @override |
| 149 SourceSpan spanFromSpannable(Spannable spannable, Entity currentElement) { | 149 SourceSpan spanFromSpannable(Spannable spannable, Entity currentElement) { |
| 150 return _elementMap.getSourceSpan(spannable, currentElement); | 150 return _elementMap.getSourceSpan(spannable, currentElement); |
| 151 } | 151 } |
| 152 } | 152 } |
| 153 | 153 |
| 154 class KernelWorkItemBuilder implements WorkItemBuilder { | 154 class KernelWorkItemBuilder implements WorkItemBuilder { |
| 155 final KernelToElementMapForImpactImpl _elementMap; | 155 final KernelToElementMapForImpactImpl _elementMap; |
| 156 final ImpactTransformer _impactTransformer; | 156 final ImpactTransformer _impactTransformer; |
| 157 final NativeMemberResolver _nativeMemberResolver; | 157 final NativeMemberResolver _nativeMemberResolver; |
| 158 final Map<MemberEntity, ClosureModel> closureModels; | 158 final Map<MemberEntity, ScopeModel> closureModels; |
| 159 | 159 |
| 160 KernelWorkItemBuilder( | 160 KernelWorkItemBuilder( |
| 161 this._elementMap, | 161 this._elementMap, |
| 162 NativeBasicData nativeBasicData, | 162 NativeBasicData nativeBasicData, |
| 163 NativeDataBuilder nativeDataBuilder, | 163 NativeDataBuilder nativeDataBuilder, |
| 164 this._impactTransformer, | 164 this._impactTransformer, |
| 165 this.closureModels) | 165 this.closureModels) |
| 166 : _nativeMemberResolver = new KernelNativeMemberResolver( | 166 : _nativeMemberResolver = new KernelNativeMemberResolver( |
| 167 _elementMap, nativeBasicData, nativeDataBuilder); | 167 _elementMap, nativeBasicData, nativeDataBuilder); |
| 168 | 168 |
| 169 @override | 169 @override |
| 170 WorkItem createWorkItem(MemberEntity entity) { | 170 WorkItem createWorkItem(MemberEntity entity) { |
| 171 return new KernelWorkItem(_elementMap, _impactTransformer, | 171 return new KernelWorkItem(_elementMap, _impactTransformer, |
| 172 _nativeMemberResolver, entity, closureModels); | 172 _nativeMemberResolver, entity, closureModels); |
| 173 } | 173 } |
| 174 } | 174 } |
| 175 | 175 |
| 176 class KernelWorkItem implements ResolutionWorkItem { | 176 class KernelWorkItem implements ResolutionWorkItem { |
| 177 final KernelToElementMapForImpactImpl _elementMap; | 177 final KernelToElementMapForImpactImpl _elementMap; |
| 178 final ImpactTransformer _impactTransformer; | 178 final ImpactTransformer _impactTransformer; |
| 179 final NativeMemberResolver _nativeMemberResolver; | 179 final NativeMemberResolver _nativeMemberResolver; |
| 180 final MemberEntity element; | 180 final MemberEntity element; |
| 181 final Map<MemberEntity, ClosureModel> closureModels; | 181 final Map<MemberEntity, ScopeModel> closureModels; |
| 182 | 182 |
| 183 KernelWorkItem(this._elementMap, this._impactTransformer, | 183 KernelWorkItem(this._elementMap, this._impactTransformer, |
| 184 this._nativeMemberResolver, this.element, this.closureModels); | 184 this._nativeMemberResolver, this.element, this.closureModels); |
| 185 | 185 |
| 186 @override | 186 @override |
| 187 WorldImpact run() { | 187 WorldImpact run() { |
| 188 _nativeMemberResolver.resolveNativeMember(element); | 188 _nativeMemberResolver.resolveNativeMember(element); |
| 189 ResolutionImpact impact = _elementMap.computeWorldImpact(element); | 189 ResolutionImpact impact = _elementMap.computeWorldImpact(element); |
| 190 ClosureModel closureModel = _elementMap.computeClosureModel(element); | 190 ScopeModel closureModel = _elementMap.computeScopeModel(element); |
| 191 if (closureModel != null) { | 191 if (closureModel != null) { |
| 192 closureModels[element] = closureModel; | 192 closureModels[element] = closureModel; |
| 193 } | 193 } |
| 194 return _impactTransformer.transformResolutionImpact(impact); | 194 return _impactTransformer.transformResolutionImpact(impact); |
| 195 } | 195 } |
| 196 } | 196 } |
| 197 | 197 |
| 198 /// Mock implementation of [MirrorsDataImpl]. | 198 /// Mock implementation of [MirrorsDataImpl]. |
| 199 class MirrorsDataBuilderImpl extends MirrorsDataImpl { | 199 class MirrorsDataBuilderImpl extends MirrorsDataImpl { |
| 200 MirrorsDataBuilderImpl( | 200 MirrorsDataBuilderImpl( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 int get preMirrorsMethodCount { | 243 int get preMirrorsMethodCount { |
| 244 // TODO(redemption): Implement this. | 244 // TODO(redemption): Implement this. |
| 245 return null; | 245 return null; |
| 246 } | 246 } |
| 247 | 247 |
| 248 @override | 248 @override |
| 249 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) { | 249 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) { |
| 250 // TODO(redemption): Implement this. | 250 // TODO(redemption): Implement this. |
| 251 } | 251 } |
| 252 } | 252 } |
| OLD | NEW |