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

Side by Side Diff: pkg/compiler/lib/src/js_backend/codegen/codegen.dart

Issue 1616143003: Lower map literals to constructor or function calls in builder (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library code_generator; 5 library code_generator;
6 6
7 import 'glue.dart'; 7 import 'glue.dart';
8 8
9 import '../../closure.dart' show 9 import '../../closure.dart' show
10 ClosureClassElement; 10 ClosureClassElement;
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 } 363 }
364 364
365 @override 365 @override
366 js.Expression visitLiteralList(tree_ir.LiteralList node) { 366 js.Expression visitLiteralList(tree_ir.LiteralList node) {
367 registry.registerInstantiatedClass(glue.listClass); 367 registry.registerInstantiatedClass(glue.listClass);
368 List<js.Expression> entries = visitExpressionList(node.values); 368 List<js.Expression> entries = visitExpressionList(node.values);
369 return new js.ArrayInitializer(entries); 369 return new js.ArrayInitializer(entries);
370 } 370 }
371 371
372 @override 372 @override
373 js.Expression visitLiteralMap(tree_ir.LiteralMap node) {
374 ConstructorElement constructor;
375 if (node.entries.isEmpty) {
376 constructor = glue.mapLiteralConstructorEmpty;
377 } else {
378 constructor = glue.mapLiteralConstructor;
379 }
380 List<js.Expression> entries =
381 new List<js.Expression>(2 * node.entries.length);
382 for (int i = 0; i < node.entries.length; i++) {
383 entries[2 * i] = visitExpression(node.entries[i].key);
384 entries[2 * i + 1] = visitExpression(node.entries[i].value);
385 }
386 List<js.Expression> args = entries.isEmpty
387 ? <js.Expression>[]
388 : <js.Expression>[new js.ArrayInitializer(entries)];
389 return buildStaticInvoke(constructor, args);
390 }
391
392 @override
393 js.Expression visitLogicalOperator(tree_ir.LogicalOperator node) { 373 js.Expression visitLogicalOperator(tree_ir.LogicalOperator node) {
394 return new js.Binary( 374 return new js.Binary(
395 node.operator, 375 node.operator,
396 visitExpression(node.left), 376 visitExpression(node.left),
397 visitExpression(node.right)); 377 visitExpression(node.right));
398 } 378 }
399 379
400 @override 380 @override
401 js.Expression visitNot(tree_ir.Not node) { 381 js.Expression visitNot(tree_ir.Not node) {
402 return new js.Prefix("!", visitExpression(node.operand)); 382 return new js.Prefix("!", visitExpression(node.operand));
(...skipping 834 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 void registerDefaultParameterValues(ExecutableElement element) { 1217 void registerDefaultParameterValues(ExecutableElement element) {
1238 if (element is! FunctionElement) return; 1218 if (element is! FunctionElement) return;
1239 FunctionElement function = element; 1219 FunctionElement function = element;
1240 if (function.isStatic) return; // Defaults are inlined at call sites. 1220 if (function.isStatic) return; // Defaults are inlined at call sites.
1241 function.functionSignature.forEachOptionalParameter((param) { 1221 function.functionSignature.forEachOptionalParameter((param) {
1242 ConstantValue constant = glue.getDefaultParameterValue(param); 1222 ConstantValue constant = glue.getDefaultParameterValue(param);
1243 registry.registerCompileTimeConstant(constant); 1223 registry.registerCompileTimeConstant(constant);
1244 }); 1224 });
1245 } 1225 }
1246 } 1226 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698