Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Side by Side Diff: pkg/compiler/lib/src/kernel/kernel_strategy.dart

Issue 2998673002: Added ThisVariable in scoping and the captured scope of initialized fields. (Closed)
Patch Set: . Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map_impl.dart ('k') | pkg/compiler/lib/src/ssa/type_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698