| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 dart2js.ir_builder_task; | 5 library dart2js.ir_builder_task; |
| 6 | 6 |
| 7 import '../closure.dart' as closurelib; | 7 import '../closure.dart' as closurelib; |
| 8 import '../closure.dart' hide ClosureScope; | 8 import '../closure.dart' hide ClosureScope; |
| 9 import '../constants/expressions.dart'; | 9 import '../constants/expressions.dart'; |
| 10 import '../dart_types.dart'; | 10 import '../dart_types.dart'; |
| (...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 | 755 |
| 756 @override | 756 @override |
| 757 ir.Primitive visitIsNot(ast.Send node, | 757 ir.Primitive visitIsNot(ast.Send node, |
| 758 ast.Node expression, DartType type, _) { | 758 ast.Node expression, DartType type, _) { |
| 759 ir.Primitive value = visit(expression); | 759 ir.Primitive value = visit(expression); |
| 760 ir.Primitive check = irBuilder.buildTypeOperator( | 760 ir.Primitive check = irBuilder.buildTypeOperator( |
| 761 value, type, isTypeTest: true); | 761 value, type, isTypeTest: true); |
| 762 return irBuilder.buildNegation(check); | 762 return irBuilder.buildNegation(check); |
| 763 } | 763 } |
| 764 | 764 |
| 765 ir.Primitive translateBinary(ast.Node left, | 765 ir.Primitive translateBinary(ast.Send node, |
| 766 ast.Node left, |
| 766 op.BinaryOperator operator, | 767 op.BinaryOperator operator, |
| 767 ast.Node right) { | 768 ast.Node right) { |
| 768 Selector selector = new Selector.binaryOperator(operator.selectorName); | 769 Selector selector = useSelectorTypeOfNode( |
| 770 new Selector.binaryOperator(operator.selectorName), |
| 771 node); |
| 769 ir.Primitive receiver = visit(left); | 772 ir.Primitive receiver = visit(left); |
| 770 List<ir.Primitive> arguments = <ir.Primitive>[visit(right)]; | 773 List<ir.Primitive> arguments = <ir.Primitive>[visit(right)]; |
| 771 arguments = normalizeDynamicArguments(selector.callStructure, arguments); | 774 arguments = normalizeDynamicArguments(selector.callStructure, arguments); |
| 772 return irBuilder.buildDynamicInvocation(receiver, selector, arguments); | 775 return irBuilder.buildDynamicInvocation(receiver, selector, arguments); |
| 773 } | 776 } |
| 774 | 777 |
| 775 @override | 778 @override |
| 776 ir.Primitive visitBinary(ast.Send node, | 779 ir.Primitive visitBinary(ast.Send node, |
| 777 ast.Node left, | 780 ast.Node left, |
| 778 op.BinaryOperator operator, | 781 op.BinaryOperator operator, |
| 779 ast.Node right, _) { | 782 ast.Node right, _) { |
| 780 return translateBinary(left, operator, right); | 783 return translateBinary(node, left, operator, right); |
| 781 } | 784 } |
| 782 | 785 |
| 783 @override | 786 @override |
| 784 ir.Primitive visitIndex(ast.Send node, | 787 ir.Primitive visitIndex(ast.Send node, |
| 785 ast.Node receiver, | 788 ast.Node receiver, |
| 786 ast.Node index, _) { | 789 ast.Node index, _) { |
| 787 Selector selector = new Selector.index(); | 790 Selector selector = useSelectorTypeOfNode(new Selector.index(), node); |
| 788 ir.Primitive target = visit(receiver); | 791 ir.Primitive target = visit(receiver); |
| 789 List<ir.Primitive> arguments = <ir.Primitive>[visit(index)]; | 792 List<ir.Primitive> arguments = <ir.Primitive>[visit(index)]; |
| 790 arguments = normalizeDynamicArguments(selector.callStructure, arguments); | 793 arguments = normalizeDynamicArguments(selector.callStructure, arguments); |
| 791 return irBuilder.buildDynamicInvocation(target, selector, arguments); | 794 return irBuilder.buildDynamicInvocation(target, selector, arguments); |
| 792 } | 795 } |
| 793 | 796 |
| 794 ir.Primitive translateSuperBinary(FunctionElement function, | 797 ir.Primitive translateSuperBinary(FunctionElement function, |
| 795 op.BinaryOperator operator, | 798 op.BinaryOperator operator, |
| 796 ast.Node argument) { | 799 ast.Node argument) { |
| 797 CallStructure callStructure = CallStructure.ONE_ARG; | 800 CallStructure callStructure = CallStructure.ONE_ARG; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 819 _) { | 822 _) { |
| 820 return irBuilder.buildSuperIndex(function, visit(index)); | 823 return irBuilder.buildSuperIndex(function, visit(index)); |
| 821 } | 824 } |
| 822 | 825 |
| 823 @override | 826 @override |
| 824 ir.Primitive visitEquals( | 827 ir.Primitive visitEquals( |
| 825 ast.Send node, | 828 ast.Send node, |
| 826 ast.Node left, | 829 ast.Node left, |
| 827 ast.Node right, | 830 ast.Node right, |
| 828 _) { | 831 _) { |
| 829 return translateBinary(left, op.BinaryOperator.EQ, right); | 832 return translateBinary(node, left, op.BinaryOperator.EQ, right); |
| 830 } | 833 } |
| 831 | 834 |
| 832 @override | 835 @override |
| 833 ir.Primitive visitSuperEquals( | 836 ir.Primitive visitSuperEquals( |
| 834 ast.Send node, | 837 ast.Send node, |
| 835 FunctionElement function, | 838 FunctionElement function, |
| 836 ast.Node argument, | 839 ast.Node argument, |
| 837 _) { | 840 _) { |
| 838 return translateSuperBinary(function, op.BinaryOperator.EQ, argument); | 841 return translateSuperBinary(function, op.BinaryOperator.EQ, argument); |
| 839 } | 842 } |
| 840 | 843 |
| 841 @override | 844 @override |
| 842 ir.Primitive visitNot( | 845 ir.Primitive visitNot( |
| 843 ast.Send node, | 846 ast.Send node, |
| 844 ast.Node expression, | 847 ast.Node expression, |
| 845 _) { | 848 _) { |
| 846 return irBuilder.buildNegation(visit(expression)); | 849 return irBuilder.buildNegation(visit(expression)); |
| 847 } | 850 } |
| 848 | 851 |
| 849 @override | 852 @override |
| 850 ir.Primitive visitNotEquals( | 853 ir.Primitive visitNotEquals( |
| 851 ast.Send node, | 854 ast.Send node, |
| 852 ast.Node left, | 855 ast.Node left, |
| 853 ast.Node right, | 856 ast.Node right, |
| 854 _) { | 857 _) { |
| 855 return irBuilder.buildNegation( | 858 return irBuilder.buildNegation( |
| 856 translateBinary(left, op.BinaryOperator.NOT_EQ, right)); | 859 translateBinary(node, left, op.BinaryOperator.NOT_EQ, right)); |
| 857 } | 860 } |
| 858 | 861 |
| 859 @override | 862 @override |
| 860 ir.Primitive visitSuperNotEquals( | 863 ir.Primitive visitSuperNotEquals( |
| 861 ast.Send node, | 864 ast.Send node, |
| 862 FunctionElement function, | 865 FunctionElement function, |
| 863 ast.Node argument, | 866 ast.Node argument, |
| 864 _) { | 867 _) { |
| 865 return irBuilder.buildNegation( | 868 return irBuilder.buildNegation( |
| 866 translateSuperBinary(function, op.BinaryOperator.NOT_EQ, argument)); | 869 translateSuperBinary(function, op.BinaryOperator.NOT_EQ, argument)); |
| (...skipping 1990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2857 } | 2860 } |
| 2858 | 2861 |
| 2859 processSetStatic(ir.SetStatic node) { | 2862 processSetStatic(ir.SetStatic node) { |
| 2860 node.body = replacementFor(node.body); | 2863 node.body = replacementFor(node.body); |
| 2861 } | 2864 } |
| 2862 | 2865 |
| 2863 processContinuation(ir.Continuation node) { | 2866 processContinuation(ir.Continuation node) { |
| 2864 node.body = replacementFor(node.body); | 2867 node.body = replacementFor(node.body); |
| 2865 } | 2868 } |
| 2866 } | 2869 } |
| OLD | NEW |