| 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 '../closure.dart'; | 7 import '../closure.dart'; |
| 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 '../library_loader.dart'; | 28 import '../library_loader.dart'; |
| 29 import '../native/enqueue.dart' show NativeResolutionEnqueuer; |
| 29 import '../native/resolver.dart'; | 30 import '../native/resolver.dart'; |
| 31 import '../options.dart'; |
| 30 import '../serialization/task.dart'; | 32 import '../serialization/task.dart'; |
| 31 import '../patch_parser.dart'; | 33 import '../patch_parser.dart'; |
| 32 import '../resolved_uri_translator.dart'; | 34 import '../resolved_uri_translator.dart'; |
| 33 import '../universe/world_builder.dart'; | 35 import '../universe/world_builder.dart'; |
| 34 import '../universe/world_impact.dart'; | 36 import '../universe/world_impact.dart'; |
| 35 import '../world.dart'; | 37 import '../world.dart'; |
| 36 import 'element_map.dart'; | 38 import 'element_map.dart'; |
| 37 import 'element_map_impl.dart'; | 39 import 'element_map_impl.dart'; |
| 38 import 'kernel_backend_strategy.dart'; | 40 import 'kernel_backend_strategy.dart'; |
| 39 | 41 |
| 40 /// 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 |
| 41 /// model from kernel IR nodes. | 43 /// model from kernel IR nodes. |
| 42 class KernelFrontEndStrategy implements FrontendStrategy { | 44 class KernelFrontEndStrategy extends FrontendStrategyBase { |
| 45 CompilerOptions _options; |
| 43 KernelToElementMapForImpactImpl _elementMap; | 46 KernelToElementMapForImpactImpl _elementMap; |
| 44 | 47 |
| 45 KernelAnnotationProcessor _annotationProcesser; | 48 KernelAnnotationProcessor _annotationProcesser; |
| 46 | 49 |
| 47 KernelFrontEndStrategy( | 50 KernelFrontEndStrategy( |
| 48 DiagnosticReporter reporter, env.Environment environment) | 51 this._options, DiagnosticReporter reporter, env.Environment environment) |
| 49 : _elementMap = useJsStrategyForTesting | 52 : _elementMap = useJsStrategyForTesting |
| 50 ? new KernelToElementMapForImpactImpl2(reporter, environment) | 53 ? new KernelToElementMapForImpactImpl2(reporter, environment) |
| 51 : new KernelToElementMapImpl(reporter, environment); | 54 : new KernelToElementMapImpl(reporter, environment); |
| 52 | 55 |
| 53 @override | 56 @override |
| 54 LibraryLoaderTask createLibraryLoader( | 57 LibraryLoaderTask createLibraryLoader( |
| 55 ResolvedUriTranslator uriTranslator, | 58 ResolvedUriTranslator uriTranslator, |
| 56 ScriptLoader scriptLoader, | 59 ScriptLoader scriptLoader, |
| 57 ElementScanner scriptScanner, | 60 ElementScanner scriptScanner, |
| 58 LibraryDeserializer deserializer, | 61 LibraryDeserializer deserializer, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 69 ElementEnvironment get elementEnvironment => _elementMap.elementEnvironment; | 72 ElementEnvironment get elementEnvironment => _elementMap.elementEnvironment; |
| 70 | 73 |
| 71 @override | 74 @override |
| 72 CommonElements get commonElements => _elementMap.commonElements; | 75 CommonElements get commonElements => _elementMap.commonElements; |
| 73 | 76 |
| 74 DartTypes get dartTypes => _elementMap.types; | 77 DartTypes get dartTypes => _elementMap.types; |
| 75 | 78 |
| 76 KernelToElementMapForImpact get elementMap => _elementMap; | 79 KernelToElementMapForImpact get elementMap => _elementMap; |
| 77 | 80 |
| 78 @override | 81 @override |
| 79 AnnotationProcessor get annotationProcesser => | 82 AnnotationProcessor get annotationProcesser => _annotationProcesser ??= |
| 80 _annotationProcesser ??= new KernelAnnotationProcessor(elementMap); | 83 new KernelAnnotationProcessor(elementMap, nativeBasicDataBuilder); |
| 81 | 84 |
| 82 @override | 85 @override |
| 83 NativeClassFinder createNativeClassFinder(NativeBasicData nativeBasicData) { | 86 NativeClassFinder createNativeClassFinder(NativeBasicData nativeBasicData) { |
| 84 return new BaseNativeClassFinder(_elementMap.elementEnvironment, | 87 return new BaseNativeClassFinder(_elementMap.elementEnvironment, |
| 85 elementMap.commonElements, nativeBasicData); | 88 elementMap.commonElements, nativeBasicData); |
| 86 } | 89 } |
| 87 | 90 |
| 88 NoSuchMethodResolver createNoSuchMethodResolver() { | 91 NoSuchMethodResolver createNoSuchMethodResolver() { |
| 89 return new KernelNoSuchMethodResolver(elementMap); | 92 return new KernelNoSuchMethodResolver(elementMap); |
| 90 } | 93 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 108 RuntimeTypesNeedBuilder createRuntimeTypesNeedBuilder() { | 111 RuntimeTypesNeedBuilder createRuntimeTypesNeedBuilder() { |
| 109 return new RuntimeTypesNeedBuilderImpl( | 112 return new RuntimeTypesNeedBuilderImpl( |
| 110 elementEnvironment, _elementMap.types); | 113 elementEnvironment, _elementMap.types); |
| 111 } | 114 } |
| 112 | 115 |
| 113 ResolutionWorldBuilder createResolutionWorldBuilder( | 116 ResolutionWorldBuilder createResolutionWorldBuilder( |
| 114 NativeBasicData nativeBasicData, | 117 NativeBasicData nativeBasicData, |
| 115 NativeDataBuilder nativeDataBuilder, | 118 NativeDataBuilder nativeDataBuilder, |
| 116 InterceptorDataBuilder interceptorDataBuilder, | 119 InterceptorDataBuilder interceptorDataBuilder, |
| 117 BackendUsageBuilder backendUsageBuilder, | 120 BackendUsageBuilder backendUsageBuilder, |
| 121 RuntimeTypesNeedBuilder rtiNeedBuilder, |
| 122 NativeResolutionEnqueuer nativeResolutionEnqueuer, |
| 118 SelectorConstraintsStrategy selectorConstraintsStrategy) { | 123 SelectorConstraintsStrategy selectorConstraintsStrategy) { |
| 119 return new KernelResolutionWorldBuilder( | 124 return new KernelResolutionWorldBuilder( |
| 125 _options, |
| 120 elementMap, | 126 elementMap, |
| 121 nativeBasicData, | 127 nativeBasicData, |
| 122 nativeDataBuilder, | 128 nativeDataBuilder, |
| 123 interceptorDataBuilder, | 129 interceptorDataBuilder, |
| 124 backendUsageBuilder, | 130 backendUsageBuilder, |
| 131 rtiNeedBuilder, |
| 132 nativeResolutionEnqueuer, |
| 125 selectorConstraintsStrategy); | 133 selectorConstraintsStrategy); |
| 126 } | 134 } |
| 127 | 135 |
| 128 WorkItemBuilder createResolutionWorkItemBuilder( | 136 WorkItemBuilder createResolutionWorkItemBuilder( |
| 129 NativeBasicData nativeBasicData, | 137 NativeBasicData nativeBasicData, |
| 130 NativeDataBuilder nativeDataBuilder, | 138 NativeDataBuilder nativeDataBuilder, |
| 131 ImpactTransformer impactTransformer) { | 139 ImpactTransformer impactTransformer) { |
| 132 return new KernelWorkItemBuilder( | 140 return new KernelWorkItemBuilder( |
| 133 elementMap, nativeBasicData, nativeDataBuilder, impactTransformer); | 141 elementMap, nativeBasicData, nativeDataBuilder, impactTransformer); |
| 134 } | 142 } |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 int get preMirrorsMethodCount { | 231 int get preMirrorsMethodCount { |
| 224 // TODO(redemption): Implement this. | 232 // TODO(redemption): Implement this. |
| 225 return null; | 233 return null; |
| 226 } | 234 } |
| 227 | 235 |
| 228 @override | 236 @override |
| 229 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) { | 237 void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) { |
| 230 // TODO(redemption): Implement this. | 238 // TODO(redemption): Implement this. |
| 231 } | 239 } |
| 232 } | 240 } |
| OLD | NEW |