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

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

Issue 2498493003: kernel->ssa: get simple constructors working (Closed)
Patch Set: respond to comments Created 4 years, 1 month 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/builder_kernel.dart ('k') | pkg/compiler/lib/src/tree/nodes.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 '../constants/expressions.dart'; 7 import '../constants/expressions.dart';
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/names.dart'; 9 import '../common/names.dart';
10 import '../compiler.dart'; 10 import '../compiler.dart';
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 SideEffects getSideEffects(ir.Node node) { 120 SideEffects getSideEffects(ir.Node node) {
121 return _compiler.closedWorld.getSideEffectsOfElement(getElement(node)); 121 return _compiler.closedWorld.getSideEffectsOfElement(getElement(node));
122 } 122 }
123 123
124 CallStructure getCallStructure(ir.Arguments arguments) { 124 CallStructure getCallStructure(ir.Arguments arguments) {
125 int argumentCount = arguments.positional.length + arguments.named.length; 125 int argumentCount = arguments.positional.length + arguments.named.length;
126 List<String> namedArguments = arguments.named.map((e) => e.name).toList(); 126 List<String> namedArguments = arguments.named.map((e) => e.name).toList();
127 return new CallStructure(argumentCount, namedArguments); 127 return new CallStructure(argumentCount, namedArguments);
128 } 128 }
129 129
130 FunctionSignature getFunctionSignature(ir.FunctionNode function) {
131 return getElement(function).asFunctionElement().functionSignature;
132 }
133
130 Name getName(ir.Name name) { 134 Name getName(ir.Name name) {
131 return new Name( 135 return new Name(
132 name.name, name.isPrivate ? getElement(name.library) : null); 136 name.name, name.isPrivate ? getElement(name.library) : null);
133 } 137 }
134 138
139 ir.Field getFieldFromElement(FieldElement field) {
140 return kernel.fields[field];
141 }
142
135 Selector getSelector(ir.Expression node) { 143 Selector getSelector(ir.Expression node) {
136 if (node is ir.PropertyGet) return getGetterSelector(node); 144 if (node is ir.PropertyGet) return getGetterSelector(node);
137 if (node is ir.InvocationExpression) return getInvocationSelector(node); 145 if (node is ir.InvocationExpression) return getInvocationSelector(node);
138 _compiler.reporter.internalError(getNode(node), 146 _compiler.reporter.internalError(getNode(node),
139 "Can only get the selector for a property get or an invocation."); 147 "Can only get the selector for a property get or an invocation.");
140 return null; 148 return null;
141 } 149 }
142 150
143 Selector getInvocationSelector(ir.InvocationExpression invocation) { 151 Selector getInvocationSelector(ir.InvocationExpression invocation) {
144 Name name = getName(invocation.name); 152 Name name = getName(invocation.name);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 288
281 TypeMask get assertTestReturnType => TypeMaskFactory 289 TypeMask get assertTestReturnType => TypeMaskFactory
282 .inferredReturnTypeForElement(_backend.helpers.assertTest, _compiler); 290 .inferredReturnTypeForElement(_backend.helpers.assertTest, _compiler);
283 291
284 ir.Procedure get assertThrow => 292 ir.Procedure get assertThrow =>
285 kernel.functions[_backend.helpers.assertThrow]; 293 kernel.functions[_backend.helpers.assertThrow];
286 294
287 TypeMask get assertThrowReturnType => TypeMaskFactory 295 TypeMask get assertThrowReturnType => TypeMaskFactory
288 .inferredReturnTypeForElement(_backend.helpers.assertThrow, _compiler); 296 .inferredReturnTypeForElement(_backend.helpers.assertThrow, _compiler);
289 297
298 ir.Class get objectClass => kernel.classes[_compiler.coreClasses.objectClass];
299
290 DartType getDartType(ir.DartType type) { 300 DartType getDartType(ir.DartType type) {
291 return type.accept(_typeConverter); 301 return type.accept(_typeConverter);
292 } 302 }
293 303
294 List<DartType> getDartTypes(List<ir.DartType> types) { 304 List<DartType> getDartTypes(List<ir.DartType> types) {
295 return types.map(getDartType).toList(); 305 return types.map(getDartType).toList();
296 } 306 }
297 307
298 DartType getFunctionReturnType(ir.FunctionNode node) { 308 DartType getFunctionReturnType(ir.FunctionNode node) {
299 return getDartType(node.returnType); 309 return getDartType(node.returnType);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 if (constant == null) { 341 if (constant == null) {
332 throw new UnsupportedError( 342 throw new UnsupportedError(
333 'No constant for ${DebugPrinter.prettyPrint(node)}'); 343 'No constant for ${DebugPrinter.prettyPrint(node)}');
334 } 344 }
335 metadata.add(constant); 345 metadata.add(constant);
336 }); 346 });
337 return metadata; 347 return metadata;
338 } 348 }
339 349
340 /// Compute the kind of foreign helper function called by [node], if any. 350 /// Compute the kind of foreign helper function called by [node], if any.
341 @override
342 ForeignKind getForeignKind(ir.StaticInvocation node) { 351 ForeignKind getForeignKind(ir.StaticInvocation node) {
343 if (isForeignLibrary(node.target.enclosingLibrary)) { 352 if (isForeignLibrary(node.target.enclosingLibrary)) {
344 switch (node.target.name.name) { 353 switch (node.target.name.name) {
345 case BackendHelpers.JS: 354 case BackendHelpers.JS:
346 return ForeignKind.JS; 355 return ForeignKind.JS;
347 case BackendHelpers.JS_BUILTIN: 356 case BackendHelpers.JS_BUILTIN:
348 return ForeignKind.JS_BUILTIN; 357 return ForeignKind.JS_BUILTIN;
349 case BackendHelpers.JS_EMBEDDED_GLOBAL: 358 case BackendHelpers.JS_EMBEDDED_GLOBAL:
350 return ForeignKind.JS_EMBEDDED_GLOBAL; 359 return ForeignKind.JS_EMBEDDED_GLOBAL;
351 case BackendHelpers.JS_INTERCEPTOR_CONSTANT: 360 case BackendHelpers.JS_INTERCEPTOR_CONSTANT:
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 astAdapter.reporter.internalError( 681 astAdapter.reporter.internalError(
673 CURRENT_ELEMENT_SPANNABLE, "Unexpected constant target: $element."); 682 CURRENT_ELEMENT_SPANNABLE, "Unexpected constant target: $element.");
674 return null; 683 return null;
675 } 684 }
676 685
677 @override 686 @override
678 ConstantExpression visitStringLiteral(ir.StringLiteral node) { 687 ConstantExpression visitStringLiteral(ir.StringLiteral node) {
679 return new StringConstantExpression(node.value); 688 return new StringConstantExpression(node.value);
680 } 689 }
681 } 690 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder_kernel.dart ('k') | pkg/compiler/lib/src/tree/nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698