| Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| index aabb7a3f1b3c0caa96f4b419ef4b54c493e5889a..b852418c70ef4530cc69fdb509c7f6935e16895b 100644
|
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
|
| @@ -156,8 +156,11 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| return name;
|
| }
|
|
|
| - List<js.Expression> visitArguments(List<tree_ir.Expression> arguments) {
|
| - return arguments.map(visitExpression).toList();
|
| + List<js.Expression> visitExpressionList(
|
| + List<tree_ir.Expression> expressions) {
|
| + return new List<js.Expression>.generate(expressions.length,
|
| + (int index) => visitExpression(expressions[index]),
|
| + growable: false);
|
| }
|
|
|
| giveup(tree_ir.Node node,
|
| @@ -242,7 +245,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| registry.registerInstantiatedType(node.type);
|
| Selector selector = node.selector;
|
| FunctionElement target = node.target;
|
| - List<js.Expression> arguments = visitArguments(node.arguments);
|
| + List<js.Expression> arguments = visitExpressionList(node.arguments);
|
| return buildStaticInvoke(selector, target, arguments);
|
| }
|
|
|
| @@ -269,7 +272,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| registerMethodInvoke(node);
|
| return js.propertyCall(visitExpression(node.receiver),
|
| glue.invocationName(node.selector),
|
| - visitArguments(node.arguments));
|
| + visitExpressionList(node.arguments));
|
| }
|
|
|
| @override
|
| @@ -277,7 +280,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| Selector selector = node.selector;
|
| assert(selector.isGetter || selector.isSetter || selector.isCall);
|
| FunctionElement target = node.target;
|
| - List<js.Expression> arguments = visitArguments(node.arguments);
|
| + List<js.Expression> arguments = visitExpressionList(node.arguments);
|
| return buildStaticInvoke(selector, target, arguments,
|
| sourceInformation: node.sourceInformation);
|
| }
|
| @@ -291,19 +294,19 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| return js.js('#.#(#)',
|
| [visitExpression(node.receiver),
|
| glue.instanceMethodName(node.target),
|
| - visitArguments(node.arguments)]);
|
| + visitExpressionList(node.arguments)]);
|
| }
|
| return js.js('#.#.call(#, #)',
|
| [glue.prototypeAccess(node.target.enclosingClass),
|
| glue.invocationName(node.selector),
|
| visitExpression(node.receiver),
|
| - visitArguments(node.arguments)]);
|
| + visitExpressionList(node.arguments)]);
|
| }
|
|
|
| @override
|
| js.Expression visitLiteralList(tree_ir.LiteralList node) {
|
| registry.registerInstantiatedClass(glue.listClass);
|
| - List<js.Expression> entries = node.values.map(visitExpression).toList();
|
| + List<js.Expression> entries = visitExpressionList(node.values);
|
| return new js.ArrayInitializer(entries);
|
| }
|
|
|
| @@ -351,8 +354,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| @override
|
| js.Expression visitTypeOperator(tree_ir.TypeOperator node) {
|
| js.Expression value = visitExpression(node.value);
|
| - List<js.Expression> typeArguments =
|
| - node.typeArguments.map(visitExpression).toList();
|
| + List<js.Expression> typeArguments = visitExpressionList(node.typeArguments);
|
| if (!node.isTypeTest) {
|
| giveup(node, 'type casts not implemented.');
|
| }
|
| @@ -557,7 +559,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
|
|
| @override
|
| js.Expression visitCreateBox(tree_ir.CreateBox node) {
|
| - return new js.ObjectInitializer([]);
|
| + return new js.ObjectInitializer(const <js.Property>[]);
|
| }
|
|
|
| @override
|
| @@ -570,7 +572,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| registry.registerInstantiatedClass(cls);
|
| js.Expression instance = new js.New(
|
| glue.constructorAccess(cls),
|
| - node.arguments.map(visitExpression).toList());
|
| + visitExpressionList(node.arguments));
|
|
|
| List<tree_ir.Expression> typeInformation = node.typeInformation;
|
| assert(typeInformation.isEmpty ||
|
| @@ -578,7 +580,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| if (typeInformation.isNotEmpty) {
|
| FunctionElement helper = glue.getAddRuntimeTypeInformation();
|
| js.Expression typeArguments = new js.ArrayInitializer(
|
| - typeInformation.map(visitExpression).toList());
|
| + visitExpressionList(typeInformation));
|
| return buildStaticHelperInvocation(helper,
|
| <js.Expression>[instance, typeArguments]);
|
| } else {
|
| @@ -593,9 +595,9 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| js.Expression internalName = js.string(glue.invocationName(node.selector));
|
| js.Expression kind = js.number(node.selector.invocationMirrorKind);
|
| js.Expression arguments = new js.ArrayInitializer(
|
| - node.arguments.map(visitExpression).toList());
|
| + visitExpressionList(node.arguments));
|
| js.Expression argumentNames = new js.ArrayInitializer(
|
| - node.selector.namedArguments.map(js.string).toList());
|
| + node.selector.namedArguments.map(js.string).toList(growable: false));
|
| return buildStaticHelperInvocation(glue.createInvocationMirrorMethod,
|
| [name, internalName, kind, arguments, argumentNames]);
|
| }
|
| @@ -628,7 +630,8 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
| // Read a lazily initialized field.
|
| registry.registerStaticUse(node.element.declaration);
|
| js.Expression getter = glue.isolateLazyInitializerAccess(node.element);
|
| - return new js.Call(getter, [], sourceInformation: node.sourceInformation);
|
| + return new js.Call(getter, <js.Expression>[],
|
| + sourceInformation: node.sourceInformation);
|
| }
|
| // Read an eagerly initialized field.
|
| registry.registerStaticUse(node.element.declaration);
|
| @@ -678,8 +681,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
|
|
|
| @override
|
| js.Expression visitTypeExpression(tree_ir.TypeExpression node) {
|
| - List<js.Expression> arguments =
|
| - node.arguments.map(visitExpression).toList(growable: false);
|
| + List<js.Expression> arguments = visitExpressionList(node.arguments);
|
| return glue.generateTypeRepresentation(node.dartType, arguments);
|
| }
|
|
|
|
|