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

Side by Side Diff: pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart

Issue 2360673003: kernel->ssa: Implement for-loops and while-loops (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « pkg/compiler/lib/src/ssa/jump_handler.dart ('k') | pkg/compiler/lib/src/ssa/loop_handler.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 '../common.dart'; 7 import '../common.dart';
8 import '../common/names.dart'; 8 import '../common/names.dart';
9 import '../compiler.dart'; 9 import '../compiler.dart';
10 import '../constants/values.dart'; 10 import '../constants/values.dart';
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 for (LibraryElement libraryElement in kernel.libraries.keys) { 46 for (LibraryElement libraryElement in kernel.libraries.keys) {
47 _nodeToElement[kernel.libraries[libraryElement]] = libraryElement; 47 _nodeToElement[kernel.libraries[libraryElement]] = libraryElement;
48 } 48 }
49 for (LocalFunctionElement localFunction in kernel.localFunctions.keys) { 49 for (LocalFunctionElement localFunction in kernel.localFunctions.keys) {
50 _nodeToElement[kernel.localFunctions[localFunction]] = localFunction; 50 _nodeToElement[kernel.localFunctions[localFunction]] = localFunction;
51 } 51 }
52 _typeConverter = new DartTypeConverter(this); 52 _typeConverter = new DartTypeConverter(this);
53 } 53 }
54 54
55 Compiler get _compiler => _backend.compiler; 55 Compiler get _compiler => _backend.compiler;
56 TreeElements get _elements => _resolvedAst.elements; 56 TreeElements get elements => _resolvedAst.elements;
57 57
58 ConstantValue getConstantForSymbol(ir.SymbolLiteral node) { 58 ConstantValue getConstantForSymbol(ir.SymbolLiteral node) {
59 ast.Node astNode = getNode(node); 59 ast.Node astNode = getNode(node);
60 ConstantValue constantValue = _backend.constants 60 ConstantValue constantValue = _backend.constants
61 .getConstantValueForNode(astNode, _resolvedAst.elements); 61 .getConstantValueForNode(astNode, _resolvedAst.elements);
62 assert(invariant(astNode, constantValue != null, 62 assert(invariant(astNode, constantValue != null,
63 message: 'No constant computed for $node')); 63 message: 'No constant computed for $node'));
64 return constantValue; 64 return constantValue;
65 } 65 }
66 66
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 121
122 Selector getGetterSelector(ir.PropertyGet getter) { 122 Selector getGetterSelector(ir.PropertyGet getter) {
123 ir.Name irName = getter.name; 123 ir.Name irName = getter.name;
124 Name name = new Name( 124 Name name = new Name(
125 irName.name, irName.isPrivate ? getElement(irName.library) : null); 125 irName.name, irName.isPrivate ? getElement(irName.library) : null);
126 return new Selector.getter(name); 126 return new Selector.getter(name);
127 } 127 }
128 128
129 TypeMask typeOfInvocation(ir.MethodInvocation invocation) { 129 TypeMask typeOfInvocation(ir.MethodInvocation invocation) {
130 return _compiler.globalInference.results 130 return _compiler.globalInference.results
131 .typeOfSend(getNode(invocation), _elements); 131 .typeOfSend(getNode(invocation), elements);
132 } 132 }
133 133
134 TypeMask typeOfGet(ir.PropertyGet getter) { 134 TypeMask typeOfGet(ir.PropertyGet getter) {
135 return _compiler.globalInference.results 135 return _compiler.globalInference.results
136 .typeOfSend(getNode(getter), _elements); 136 .typeOfSend(getNode(getter), elements);
137 } 137 }
138 138
139 TypeMask inferredTypeOf(ir.Member node) { 139 TypeMask inferredTypeOf(ir.Member node) {
140 return TypeMaskFactory.inferredTypeForElement(getElement(node), _compiler); 140 return TypeMaskFactory.inferredTypeForElement(getElement(node), _compiler);
141 } 141 }
142 142
143 TypeMask selectorTypeOf(ir.MethodInvocation invocation) { 143 TypeMask selectorTypeOf(ir.MethodInvocation invocation) {
144 return TypeMaskFactory.inferredTypeForSelector( 144 return TypeMaskFactory.inferredTypeForSelector(
145 getSelector(invocation), typeOfInvocation(invocation), _compiler); 145 getSelector(invocation), typeOfInvocation(invocation), _compiler);
146 } 146 }
147 147
148 TypeMask selectorGetterTypeOf(ir.PropertyGet getter) { 148 TypeMask selectorGetterTypeOf(ir.PropertyGet getter) {
149 return TypeMaskFactory.inferredTypeForSelector( 149 return TypeMaskFactory.inferredTypeForSelector(
150 getGetterSelector(getter), typeOfGet(getter), _compiler); 150 getGetterSelector(getter), typeOfGet(getter), _compiler);
151 } 151 }
152 152
153 ConstantValue getConstantFor(ir.Node node) { 153 ConstantValue getConstantFor(ir.Node node) {
154 ConstantValue constantValue = 154 ConstantValue constantValue =
155 _backend.constants.getConstantValueForNode(getNode(node), _elements); 155 _backend.constants.getConstantValueForNode(getNode(node), elements);
156 assert(invariant(getNode(node), constantValue != null, 156 assert(invariant(getNode(node), constantValue != null,
157 message: 'No constant computed for $node')); 157 message: 'No constant computed for $node'));
158 return constantValue; 158 return constantValue;
159 } 159 }
160 160
161 bool isIntercepted(ir.Node node) { 161 bool isIntercepted(ir.Node node) {
162 Selector selector; 162 Selector selector;
163 if (node is ir.PropertyGet) { 163 if (node is ir.PropertyGet) {
164 selector = getGetterSelector(node); 164 selector = getGetterSelector(node);
165 } else { 165 } else {
166 selector = getSelector(node); 166 selector = getSelector(node);
167 } 167 }
168 return _backend.isInterceptedSelector(selector); 168 return _backend.isInterceptedSelector(selector);
169 } 169 }
170 170
171 JumpTarget getTargetDefinition(ir.Node node) =>
172 elements.getTargetDefinition(getNode(node));
173
171 ir.Procedure get mapLiteralConstructor => 174 ir.Procedure get mapLiteralConstructor =>
172 kernel.functions[_backend.helpers.mapLiteralConstructor]; 175 kernel.functions[_backend.helpers.mapLiteralConstructor];
173 176
174 ir.Procedure get mapLiteralConstructorEmpty => 177 ir.Procedure get mapLiteralConstructorEmpty =>
175 kernel.functions[_backend.helpers.mapLiteralConstructorEmpty]; 178 kernel.functions[_backend.helpers.mapLiteralConstructorEmpty];
176 179
177 DartType getDartType(ir.DartType type) { 180 DartType getDartType(ir.DartType type) {
178 return type.accept(_typeConverter); 181 return type.accept(_typeConverter);
179 } 182 }
180 183
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 @override 220 @override
218 DartType visitDynamicType(ir.DynamicType node) { 221 DartType visitDynamicType(ir.DynamicType node) {
219 return const DynamicType(); 222 return const DynamicType();
220 } 223 }
221 224
222 @override 225 @override
223 DartType visitInvalidType(ir.InvalidType node) { 226 DartType visitInvalidType(ir.InvalidType node) {
224 throw new UnimplementedError("Invalid types not currently supported"); 227 throw new UnimplementedError("Invalid types not currently supported");
225 } 228 }
226 } 229 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/jump_handler.dart ('k') | pkg/compiler/lib/src/ssa/loop_handler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698