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 |