OLD | NEW |
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 tree_ir_builder; | 5 library tree_ir_builder; |
6 | 6 |
7 import '../dart2jslib.dart' as dart2js; | 7 import '../dart2jslib.dart' as dart2js; |
8 import '../elements/elements.dart'; | 8 import '../elements/elements.dart'; |
9 import '../cps_ir/cps_ir_nodes.dart' as cps_ir; | 9 import '../cps_ir/cps_ir_nodes.dart' as cps_ir; |
10 import '../util/util.dart' show CURRENT_ELEMENT_SPANNABLE; | 10 import '../util/util.dart' show CURRENT_ELEMENT_SPANNABLE; |
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
605 Statement visitForeignCode(cps_ir.ForeignCode node) { | 605 Statement visitForeignCode(cps_ir.ForeignCode node) { |
606 if (node.codeTemplate.isExpression) { | 606 if (node.codeTemplate.isExpression) { |
607 Expression foreignCode = new ForeignExpression( | 607 Expression foreignCode = new ForeignExpression( |
608 node.codeTemplate, | 608 node.codeTemplate, |
609 node.type, | 609 node.type, |
610 node.arguments.map(getVariableUse).toList(growable: false), | 610 node.arguments.map(getVariableUse).toList(growable: false), |
611 node.nativeBehavior, | 611 node.nativeBehavior, |
612 node.dependency); | 612 node.dependency); |
613 return continueWithExpression(node.continuation, foreignCode); | 613 return continueWithExpression(node.continuation, foreignCode); |
614 } else { | 614 } else { |
615 assert(node.continuation == null); | 615 assert(node.continuation.definition.body is cps_ir.Unreachable); |
616 return new ForeignStatement( | 616 return new ForeignStatement( |
617 node.codeTemplate, | 617 node.codeTemplate, |
618 node.type, | 618 node.type, |
619 node.arguments.map(getVariableUse).toList(growable: false), | 619 node.arguments.map(getVariableUse).toList(growable: false), |
620 node.nativeBehavior, | 620 node.nativeBehavior, |
621 node.dependency); | 621 node.dependency); |
622 } | 622 } |
623 } | 623 } |
624 | 624 |
625 Expression visitGetLength(cps_ir.GetLength node) { | 625 Expression visitGetLength(cps_ir.GetLength node) { |
626 return new GetLength(getVariableUse(node.object)); | 626 return new GetLength(getVariableUse(node.object)); |
627 } | 627 } |
628 | 628 |
629 Expression visitGetIndex(cps_ir.GetIndex node) { | 629 Expression visitGetIndex(cps_ir.GetIndex node) { |
630 return new GetIndex(getVariableUse(node.object), | 630 return new GetIndex(getVariableUse(node.object), |
631 getVariableUse(node.index)); | 631 getVariableUse(node.index)); |
632 } | 632 } |
633 | 633 |
634 Expression visitSetIndex(cps_ir.SetIndex node) { | 634 Expression visitSetIndex(cps_ir.SetIndex node) { |
635 return new SetIndex(getVariableUse(node.object), | 635 return new SetIndex(getVariableUse(node.object), |
636 getVariableUse(node.index), | 636 getVariableUse(node.index), |
637 getVariableUse(node.value)); | 637 getVariableUse(node.value)); |
638 } | 638 } |
639 } | 639 } |
640 | 640 |
OLD | NEW |