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

Side by Side Diff: pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart

Issue 831133004: Use closure conversion in new dart2js backend. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Removed redundant null-check Created 5 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 | Annotate | Revision Log
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 tree_ir.optimization; 5 part of tree_ir.optimization;
6 6
7 /// Rewrites logical expressions to be more compact in the Tree IR. 7 /// Rewrites logical expressions to be more compact in the Tree IR.
8 /// 8 ///
9 /// In this class an expression is said to occur in "boolean context" if 9 /// In this class an expression is said to occur in "boolean context" if
10 /// its result is immediately applied to boolean conversion. 10 /// its result is immediately applied to boolean conversion.
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 308
309 return node; 309 return node;
310 } 310 }
311 311
312 Expression visitLogicalOperator(LogicalOperator node) { 312 Expression visitLogicalOperator(LogicalOperator node) {
313 node.left = makeCondition(node.left, true); 313 node.left = makeCondition(node.left, true);
314 node.right = makeCondition(node.right, true); 314 node.right = makeCondition(node.right, true);
315 return node; 315 return node;
316 } 316 }
317 317
318 Statement visitSetField(SetField node) {
319 node.object = visitExpression(node.object);
320 node.value = visitExpression(node.value);
321 node.next = visitStatement(node.next);
322 return node;
323 }
324
325 Expression visitGetField(GetField node) {
326 node.object = visitExpression(node.object);
327 return node;
328 }
329
330 Expression visitCreateBox(CreateBox node) {
331 return node;
332 }
333
334 Expression visitCreateClosureClass(CreateClosureClass node) {
335 _rewriteList(node.arguments);
336 return node;
337 }
338
318 /// True if the given expression is known to evaluate to a boolean. 339 /// True if the given expression is known to evaluate to a boolean.
319 /// This will not recursively traverse [Conditional] expressions, but if 340 /// This will not recursively traverse [Conditional] expressions, but if
320 /// applied to the result of [visitExpression] conditionals will have been 341 /// applied to the result of [visitExpression] conditionals will have been
321 /// rewritten anyway. 342 /// rewritten anyway.
322 bool isBooleanValued(Expression e) { 343 bool isBooleanValued(Expression e) {
323 return isTrue(e) || isFalse(e) || e is Not || e is LogicalOperator; 344 return isTrue(e) || isFalse(e) || e is Not || e is LogicalOperator;
324 } 345 }
325 346
326 /// Rewrite an expression that was originally processed in a non-boolean 347 /// Rewrite an expression that was originally processed in a non-boolean
327 /// context. 348 /// context.
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 } 482 }
462 483
463 /// Destructively updates each entry of [l] with the result of visiting it. 484 /// Destructively updates each entry of [l] with the result of visiting it.
464 void _rewriteList(List<Expression> l) { 485 void _rewriteList(List<Expression> l) {
465 for (int i = 0; i < l.length; i++) { 486 for (int i = 0; i < l.length; i++) {
466 l[i] = visitExpression(l[i]); 487 l[i] = visitExpression(l[i]);
467 } 488 }
468 } 489 }
469 } 490 }
470 491
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698