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

Unified Diff: pkg/compiler/lib/src/js_backend/codegen/codegen.dart

Issue 1164563005: Add type arguments to lists in the code generator and make them fixed length. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 7 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698