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

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

Issue 2938203003: Compute KernelClosureRepresentationInfo.variableIsUsedInTryOrSync (Closed)
Patch Set: Rebased Created 3 years, 6 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.backend_strategy; 5 library dart2js.kernel.backend_strategy;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../backend_strategy.dart'; 9 import '../backend_strategy.dart';
10 import '../closure.dart'; 10 import '../closure.dart';
(...skipping 15 matching lines...) Expand all
26 import '../options.dart'; 26 import '../options.dart';
27 import '../ssa/builder_kernel.dart'; 27 import '../ssa/builder_kernel.dart';
28 import '../ssa/nodes.dart'; 28 import '../ssa/nodes.dart';
29 import '../ssa/ssa.dart'; 29 import '../ssa/ssa.dart';
30 import '../ssa/types.dart'; 30 import '../ssa/types.dart';
31 import '../types/types.dart'; 31 import '../types/types.dart';
32 import '../universe/selector.dart'; 32 import '../universe/selector.dart';
33 import '../universe/world_builder.dart'; 33 import '../universe/world_builder.dart';
34 import '../universe/world_impact.dart'; 34 import '../universe/world_impact.dart';
35 import '../world.dart'; 35 import '../world.dart';
36 import 'closure.dart';
36 import 'element_map_impl.dart'; 37 import 'element_map_impl.dart';
37 import 'kernel_strategy.dart'; 38 import 'kernel_strategy.dart';
38 39
39 /// Backend strategy that uses the kernel elements as the backend model. 40 /// Backend strategy that uses the kernel elements as the backend model.
40 // TODO(johnniwinther): Replace this with a strategy based on the J-element 41 // TODO(johnniwinther): Replace this with a strategy based on the J-element
41 // model. 42 // model.
42 class KernelBackendStrategy implements BackendStrategy { 43 class KernelBackendStrategy implements BackendStrategy {
43 final Compiler _compiler; 44 final Compiler _compiler;
44 Sorter _sorter; 45 Sorter _sorter;
45 46
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 /// Task for building SSA from kernel IR loaded from .dill. 137 /// Task for building SSA from kernel IR loaded from .dill.
137 class KernelSsaBuilder implements SsaBuilder { 138 class KernelSsaBuilder implements SsaBuilder {
138 final CompilerTask task; 139 final CompilerTask task;
139 final Compiler _compiler; 140 final Compiler _compiler;
140 final KernelToElementMap _elementMap; 141 final KernelToElementMap _elementMap;
141 142
142 KernelSsaBuilder(this.task, this._compiler, this._elementMap); 143 KernelSsaBuilder(this.task, this._compiler, this._elementMap);
143 144
144 @override 145 @override
145 HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) { 146 HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) {
147 KernelToLocalsMap localsMap = new KernelToLocalsMapImpl(work.element);
146 KernelSsaGraphBuilder builder = new KernelSsaGraphBuilder( 148 KernelSsaGraphBuilder builder = new KernelSsaGraphBuilder(
147 work.element, 149 work.element,
148 work.element.enclosingClass, 150 work.element.enclosingClass,
149 _elementMap.getMemberNode(work.element), 151 _elementMap.getMemberNode(work.element),
150 _compiler, 152 _compiler,
151 _elementMap, 153 _elementMap,
152 new KernelToTypeInferenceMapImpl(closedWorld), 154 new KernelToTypeInferenceMapImpl(closedWorld),
153 new KernelToLocalsMapImpl(work.element), 155 localsMap,
154 closedWorld, 156 closedWorld,
155 _compiler.codegenWorldBuilder, 157 _compiler.codegenWorldBuilder,
156 work.registry, 158 work.registry,
157 _compiler.closureDataLookup, 159 new KernelClosureDataLookup(_elementMap, localsMap),
158 // TODO(johnniwinther): Support these: 160 // TODO(johnniwinther): Support these:
159 const SourceInformationBuilder(), 161 const SourceInformationBuilder(),
160 null, // Function node used as capture scope id. 162 null, // Function node used as capture scope id.
161 targetIsConstructorBody: false); 163 targetIsConstructorBody: false);
162 return builder.build(); 164 return builder.build();
163 } 165 }
164 } 166 }
165 167
166 class KernelToTypeInferenceMapImpl implements KernelToTypeInferenceMap { 168 class KernelToTypeInferenceMapImpl implements KernelToTypeInferenceMap {
167 final ClosedWorld _closedWorld; 169 final ClosedWorld _closedWorld;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 @override 280 @override
279 Local getLocal(ir.VariableDeclaration node) { 281 Local getLocal(ir.VariableDeclaration node) {
280 return _map.putIfAbsent(node, () { 282 return _map.putIfAbsent(node, () {
281 return new KLocal(node.name, currentMember); 283 return new KLocal(node.name, currentMember);
282 }); 284 });
283 } 285 }
284 286
285 @override 287 @override
286 LoopClosureRepresentationInfo getClosureRepresentationInfoForLoop( 288 LoopClosureRepresentationInfo getClosureRepresentationInfoForLoop(
287 ClosureDataLookup closureLookup, ir.TreeNode node) { 289 ClosureDataLookup closureLookup, ir.TreeNode node) {
288 return const LoopClosureRepresentationInfo(); 290 return closureLookup.getClosureRepresentationInfoForLoop(node);
289 } 291 }
290 } 292 }
291 293
292 class KLocal implements Local { 294 class KLocal implements Local {
293 final String name; 295 final String name;
294 final MemberEntity memberContext; 296 final MemberEntity memberContext;
295 297
296 KLocal(this.name, this.memberContext); 298 KLocal(this.name, this.memberContext);
297 299
298 @override 300 @override
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) { 406 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) {
405 return classes.toList() 407 return classes.toList()
406 ..sort((ClassEntity a, ClassEntity b) { 408 ..sort((ClassEntity a, ClassEntity b) {
407 int r = _compareLibraries(a.library, b.library); 409 int r = _compareLibraries(a.library, b.library);
408 if (r != 0) return r; 410 if (r != 0) return r;
409 return _compareNodes( 411 return _compareNodes(
410 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b)); 412 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b));
411 }); 413 });
412 } 414 }
413 } 415 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698