Chromium Code Reviews| 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..202157f17f14058163e1e0afc639d11974208fe1 100644 |
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| @@ -156,8 +156,10 @@ 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) { |
|
Johnni Winther
2015/06/03 09:45:39
Long line.
|
| + return new List<js.Expression>.generate(expressions.length, |
| + (int index) => visitExpression(expressions[index]), |
| + growable: false); |
| } |
| giveup(tree_ir.Node node, |
| @@ -242,7 +244,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 +271,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 +279,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 +293,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 +353,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 +558,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 +571,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 +579,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 +594,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 +629,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 +680,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); |
| } |