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

Side by Side Diff: pkg/dev_compiler/lib/src/js_ast/template.dart

Issue 2980113002: fix #27320, better DDC temp generation (Closed)
Patch Set: rebase Created 3 years, 5 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
« no previous file with comments | « pkg/dev_compiler/lib/src/js_ast/nodes.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 part of js_ast; 5 part of js_ast;
6 6
7 class TemplateManager { 7 class TemplateManager {
8 Map<String, Template> expressionTemplates = new Map<String, Template>(); 8 Map<String, Template> expressionTemplates = new Map<String, Template>();
9 Map<String, Template> statementTemplates = new Map<String, Template>(); 9 Map<String, Template> statementTemplates = new Map<String, Template>();
10 10
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 }; 402 };
403 } 403 }
404 404
405 Instantiator visitFor(For node) { 405 Instantiator visitFor(For node) {
406 Instantiator makeInit = visitNullable(node.init); 406 Instantiator makeInit = visitNullable(node.init);
407 Instantiator makeCondition = visitNullable(node.condition); 407 Instantiator makeCondition = visitNullable(node.condition);
408 Instantiator makeUpdate = visitNullable(node.update); 408 Instantiator makeUpdate = visitNullable(node.update);
409 Instantiator makeBody = visit(node.body); 409 Instantiator makeBody = visit(node.body);
410 return (arguments) { 410 return (arguments) {
411 return new For(makeInit(arguments), makeCondition(arguments), 411 return new For(makeInit(arguments), makeCondition(arguments),
412 makeUpdate(arguments), makeBody(arguments)); 412 makeUpdate(arguments)?.toVoidExpression(), makeBody(arguments));
413 }; 413 };
414 } 414 }
415 415
416 Instantiator visitForIn(ForIn node) { 416 Instantiator visitForIn(ForIn node) {
417 Instantiator makeLeftHandSide = visit(node.leftHandSide); 417 Instantiator makeLeftHandSide = visit(node.leftHandSide);
418 Instantiator makeObject = visit(node.object); 418 Instantiator makeObject = visit(node.object);
419 Instantiator makeBody = visit(node.body); 419 Instantiator makeBody = visit(node.body);
420 return (arguments) { 420 return (arguments) {
421 return new ForIn(makeLeftHandSide(arguments), makeObject(arguments), 421 return new ForIn(makeLeftHandSide(arguments), makeObject(arguments),
422 makeBody(arguments)); 422 makeBody(arguments));
(...skipping 30 matching lines...) Expand all
453 }; 453 };
454 } 454 }
455 455
456 Instantiator visitContinue(Continue node) => 456 Instantiator visitContinue(Continue node) =>
457 (arguments) => new Continue(node.targetLabel); 457 (arguments) => new Continue(node.targetLabel);
458 458
459 Instantiator visitBreak(Break node) => 459 Instantiator visitBreak(Break node) =>
460 (arguments) => new Break(node.targetLabel); 460 (arguments) => new Break(node.targetLabel);
461 461
462 Instantiator visitReturn(Return node) { 462 Instantiator visitReturn(Return node) {
463 Instantiator makeExpression = visitNullable(node.value); 463 if (node.value == null) return (args) => new Return();
464 return (arguments) => new Return(makeExpression(arguments)); 464 Instantiator makeExpression = visit(node.value);
465 return (args) => makeExpression(args).toReturn();
465 } 466 }
466 467
467 Instantiator visitDartYield(DartYield node) { 468 Instantiator visitDartYield(DartYield node) {
468 Instantiator makeExpression = visit(node.expression); 469 Instantiator makeExpression = visit(node.expression);
469 return (arguments) => 470 return (arguments) =>
470 new DartYield(makeExpression(arguments), node.hasStar); 471 new DartYield(makeExpression(arguments), node.hasStar);
471 } 472 }
472 473
473 Instantiator visitThrow(Throw node) { 474 Instantiator visitThrow(Throw node) {
474 Instantiator makeExpression = visit(node.expression); 475 Instantiator makeExpression = visit(node.expression);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 } 546 }
546 return new VariableDeclarationList(node.keyword, declarations); 547 return new VariableDeclarationList(node.keyword, declarations);
547 }; 548 };
548 } 549 }
549 550
550 Instantiator visitAssignment(Assignment node) { 551 Instantiator visitAssignment(Assignment node) {
551 Instantiator makeLeftHandSide = visit(node.leftHandSide); 552 Instantiator makeLeftHandSide = visit(node.leftHandSide);
552 String op = node.op; 553 String op = node.op;
553 Instantiator makeValue = visitNullable(node.value); 554 Instantiator makeValue = visitNullable(node.value);
554 return (arguments) { 555 return (arguments) {
555 return new Assignment.compound( 556 return makeValue(arguments)
556 makeLeftHandSide(arguments), op, makeValue(arguments)); 557 .toAssignExpression(makeLeftHandSide(arguments), op);
557 }; 558 };
558 } 559 }
559 560
560 Instantiator visitVariableInitialization(VariableInitialization node) { 561 Instantiator visitVariableInitialization(VariableInitialization node) {
561 Instantiator makeDeclaration = visit(node.declaration); 562 Instantiator makeDeclaration = visit(node.declaration);
562 Instantiator makeValue = visitNullable(node.value); 563 Instantiator makeValue = visitNullable(node.value);
563 return (arguments) { 564 return (arguments) {
564 return new VariableInitialization( 565 return new VariableInitialization(
565 makeDeclaration(arguments), makeValue(arguments)); 566 makeDeclaration(arguments), makeValue(arguments));
566 }; 567 };
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 if (count != before) containsInterpolatedNode.add(node); 910 if (count != before) containsInterpolatedNode.add(node);
910 return null; 911 return null;
911 } 912 }
912 913
913 visitInterpolatedNode(InterpolatedNode node) { 914 visitInterpolatedNode(InterpolatedNode node) {
914 containsInterpolatedNode.add(node); 915 containsInterpolatedNode.add(node);
915 if (node.isNamed) holeNames.add(node.nameOrPosition); 916 if (node.isNamed) holeNames.add(node.nameOrPosition);
916 ++count; 917 ++count;
917 } 918 }
918 } 919 }
OLDNEW
« no previous file with comments | « pkg/dev_compiler/lib/src/js_ast/nodes.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698