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

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart

Issue 1062913003: Extract CallStructure from Selector. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix expentancy in unittest Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/dart2jslib.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
index d4100eec96eed0cf0c68f8a6c458e71527ed69cf..6541e41a2533146b0cbf615a0c3a7ffff500457e 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart
@@ -19,7 +19,7 @@ import '../resolution/semantic_visitor.dart';
import '../resolution/operators.dart' as op;
import '../scanner/scannerlib.dart' show Token, isUserDefinableOperator;
import '../tree/tree.dart' as ast;
-import '../universe/universe.dart' show SelectorKind;
+import '../universe/universe.dart' show SelectorKind, CallStructure;
import 'cps_ir_nodes.dart' as ir;
import 'cps_ir_builder.dart';
@@ -187,7 +187,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
///
/// For the Dart backend, returns [arguments].
List<ir.Primitive> normalizeStaticArguments(
- Selector selector,
+ CallStructure callStructure,
FunctionElement target,
List<ir.Primitive> arguments);
@@ -924,8 +924,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
ir.Primitive visitUnary(ast.Send node,
op.UnaryOperator operator, ast.Node expression, _) {
// TODO(johnniwinther): Clean up the creation of selectors.
- Selector selector =
- new Selector(SelectorKind.OPERATOR, operator.selectorName, null, 0);
+ Selector selector = new Selector(
+ SelectorKind.OPERATOR,
+ new PublicName(operator.selectorName),
+ CallStructure.NO_ARGS);
ir.Primitive receiver = translateReceiver(expression);
return irBuilder.buildDynamicInvocation(receiver, selector, const []);
}
@@ -937,8 +939,10 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
FunctionElement function,
_) {
// TODO(johnniwinther): Clean up the creation of selectors.
- Selector selector =
- new Selector(SelectorKind.OPERATOR, operator.selectorName, null, 0);
+ Selector selector = new Selector(
+ SelectorKind.OPERATOR,
+ new PublicName(operator.selectorName),
+ CallStructure.NO_ARGS);
return irBuilder.buildSuperInvocation(function, selector, const []);
}
@@ -954,9 +958,9 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
// semantic correlation between arguments and invocation.
List<ir.Primitive> translateStaticArguments(ast.NodeList nodeList,
Element element,
- Selector selector) {
+ CallStructure callStructure) {
List<ir.Primitive> arguments = nodeList.nodes.mapToList(visit);
- return normalizeStaticArguments(selector, element, arguments);
+ return normalizeStaticArguments(callStructure, element, arguments);
}
ir.Primitive translateCallInvoke(ir.Primitive target,
@@ -1032,7 +1036,7 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
return giveup(node, 'handleStaticFunctionInvoke: foreign: $function');
}
return irBuilder.buildStaticInvocation(function, selector,
- translateStaticArguments(arguments, function, selector),
+ translateStaticArguments(arguments, function, selector.callStructure),
sourceInformation: sourceInformationBuilder.buildCall(node));
}
@@ -1714,7 +1718,8 @@ abstract class IrBuilderVisitor extends SemanticVisitor<ir.Primitive, dynamic>
Selector selector, _) {
List<ir.Primitive> arguments =
node.send.arguments.mapToList(visit, growable:false);
- arguments = normalizeStaticArguments(selector, constructor, arguments);
+ arguments = normalizeStaticArguments(
+ selector.callStructure, constructor, arguments);
return irBuilder.buildConstructorInvocation(
constructor, selector, type, arguments);
}
@@ -2014,7 +2019,7 @@ class DartIrBuilderVisitor extends IrBuilderVisitor {
}
List<ir.Primitive> normalizeStaticArguments(
- Selector selector,
+ CallStructure callStructure,
FunctionElement target,
List<ir.Primitive> arguments) {
return arguments;
@@ -2545,7 +2550,7 @@ class JsIrBuilderVisitor extends IrBuilderVisitor {
/// Inserts default arguments and normalizes order of named arguments.
List<ir.Primitive> normalizeStaticArguments(
- Selector selector,
+ CallStructure callStructure,
FunctionElement target,
List<ir.Primitive> arguments) {
target = target.implementation;
@@ -2578,7 +2583,7 @@ class JsIrBuilderVisitor extends IrBuilderVisitor {
// find them in [compiledNamedArguments]. If found, we use the
// value in the temporary list, otherwise the default value.
signature.orderedOptionalParameters.forEach((ParameterElement element) {
- int nameIndex = selector.namedArguments.indexOf(element.name);
+ int nameIndex = callStructure.namedArguments.indexOf(element.name);
if (nameIndex != -1) {
int translatedIndex = offset + nameIndex;
result.add(arguments[translatedIndex]);
@@ -2594,16 +2599,17 @@ class JsIrBuilderVisitor extends IrBuilderVisitor {
List<ir.Primitive> normalizeDynamicArguments(
Selector selector,
List<ir.Primitive> arguments) {
- assert(arguments.length == selector.argumentCount);
+ CallStructure callStructure = selector.callStructure;
+ assert(arguments.length == callStructure.argumentCount);
// Optimization: don't copy the argument list for trivial cases.
- if (selector.namedArguments.isEmpty) return arguments;
+ if (callStructure.namedArguments.isEmpty) return arguments;
List<ir.Primitive> result = <ir.Primitive>[];
- for (int i=0; i < selector.positionalArgumentCount; i++) {
+ for (int i=0; i < callStructure.positionalArgumentCount; i++) {
result.add(arguments[i]);
}
- for (String argName in selector.getOrderedNamedArguments()) {
- int nameIndex = selector.namedArguments.indexOf(argName);
- int translatedIndex = selector.positionalArgumentCount + nameIndex;
+ for (String argName in callStructure.getOrderedNamedArguments()) {
+ int nameIndex = callStructure.namedArguments.indexOf(argName);
+ int translatedIndex = callStructure.positionalArgumentCount + nameIndex;
result.add(arguments[translatedIndex]);
}
return result;
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/dart2jslib.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698