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

Side by Side Diff: pkg/compiler/lib/src/inferrer/builder_kernel.dart

Issue 2955353002: Split inference type-info accessors into members, parameters and local functions (Closed)
Patch Set: Cleanup Created 3 years, 5 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 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import '../closure.dart'; 7 import '../closure.dart';
8 import '../compiler.dart'; 8 import '../compiler.dart';
9 import '../elements/elements.dart'; 9 import '../elements/elements.dart';
10 import '../elements/entities.dart'; 10 import '../elements/entities.dart';
11 import '../kernel/kernel.dart'; 11 import '../kernel/kernel.dart';
12 import '../ssa/kernel_ast_adapter.dart'; 12 import '../ssa/kernel_ast_adapter.dart';
13 import '../tree/tree.dart' as ast; 13 import '../tree/tree.dart' as ast;
14 import '../universe/side_effects.dart' show SideEffects; 14 import '../universe/side_effects.dart' show SideEffects;
15 import 'inferrer_engine.dart'; 15 import 'inferrer_engine.dart';
16 import 'locals_handler.dart'; 16 import 'locals_handler.dart';
17 import 'type_graph_nodes.dart'; 17 import 'type_graph_nodes.dart';
18 import 'type_system.dart'; 18 import 'type_system.dart';
19 19
20 /// [KernelTypeGraphBuilder] constructs a type-inference graph for a particular 20 /// [KernelTypeGraphBuilder] constructs a type-inference graph for a particular
21 /// element. 21 /// element.
22 /// 22 ///
23 /// Calling [run] will start the work of visiting the body of the code to 23 /// Calling [run] will start the work of visiting the body of the code to
24 /// construct a set of inference-nodes that abstractly represent what the code 24 /// construct a set of inference-nodes that abstractly represent what the code
25 /// is doing. 25 /// is doing.
26 class KernelTypeGraphBuilder extends ir.Visitor<TypeInformation> { 26 class KernelTypeGraphBuilder extends ir.Visitor<TypeInformation> {
27 final Compiler compiler; 27 final Compiler compiler;
28 final AstElement originalElement; 28 final MemberElement originalElement;
29 // TODO(efortuna): Remove this. 29 // TODO(efortuna): Remove this.
30 final Element outermostElement; 30 final MemberElement outermostElement;
31 final ir.Node analyzedNode; 31 final ir.Node analyzedNode;
32 final ResolvedAst resolvedAst; 32 final ResolvedAst resolvedAst;
33 final TypeSystem types; 33 final TypeSystem types;
34 LocalsHandler locals; 34 LocalsHandler locals;
35 final InferrerEngine inferrer; 35 final InferrerEngine inferrer;
36 SideEffects sideEffects = new SideEffects.empty(); 36 SideEffects sideEffects = new SideEffects.empty();
37 int loopLevel = 0; 37 int loopLevel = 0;
38 bool get inLoop => loopLevel > 0; 38 bool get inLoop => loopLevel > 0;
39 39
40 final Set<Entity> capturedVariables = new Set<Entity>(); 40 final Set<Entity> capturedVariables = new Set<Entity>();
(...skipping 16 matching lines...) Expand all
57 if (resolvedAst.kind == ResolvedAstKind.PARSED) { 57 if (resolvedAst.kind == ResolvedAstKind.PARSED) {
58 node = resolvedAst.node; 58 node = resolvedAst.node;
59 } 59 }
60 FieldInitializationScope fieldScope = (analyzedNode is ir.Constructor) 60 FieldInitializationScope fieldScope = (analyzedNode is ir.Constructor)
61 ? new FieldInitializationScope(types) 61 ? new FieldInitializationScope(types)
62 : null; 62 : null;
63 locals = 63 locals =
64 new LocalsHandler(inferrer, types, compiler.options, node, fieldScope); 64 new LocalsHandler(inferrer, types, compiler.options, node, fieldScope);
65 } 65 }
66 66
67 factory KernelTypeGraphBuilder(Element element, ResolvedAst resolvedAst, 67 factory KernelTypeGraphBuilder(MemberElement element, ResolvedAst resolvedAst,
68 Compiler compiler, InferrerEngine inferrer, 68 Compiler compiler, InferrerEngine inferrer,
69 [LocalsHandler handler]) { 69 [LocalsHandler handler]) {
70 var adapter = _createKernelAdapter(compiler, resolvedAst); 70 var adapter = _createKernelAdapter(compiler, resolvedAst);
71 var node = adapter.getMemberNode(element); 71 var node = adapter.getMemberNode(element);
72 return new KernelTypeGraphBuilder.internal( 72 return new KernelTypeGraphBuilder.internal(
73 element, 73 element,
74 resolvedAst, 74 resolvedAst,
75 element.outermostEnclosingMemberOrTopLevel.implementation, 75 element.outermostEnclosingMemberOrTopLevel.implementation,
76 inferrer, 76 inferrer,
77 compiler, 77 compiler,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 : types.simplifyPhi(null, null, elementType); 163 : types.simplifyPhi(null, null, elementType);
164 TypeInformation containerType = 164 TypeInformation containerType =
165 listLiteral.isConst ? types.constListType : types.growableListType; 165 listLiteral.isConst ? types.constListType : types.growableListType;
166 // TODO(efortuna): Change signature of allocateList and the rest of 166 // TODO(efortuna): Change signature of allocateList and the rest of
167 // type_system to deal with Kernel elements. 167 // type_system to deal with Kernel elements.
168 return types.allocateList(containerType, astAdapter.getNode(listLiteral), 168 return types.allocateList(containerType, astAdapter.getNode(listLiteral),
169 outermostElement, elementType, length); 169 outermostElement, elementType, length);
170 }); 170 });
171 } 171 }
172 } 172 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698