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_nodes; | 5 library tree_ir_nodes; |
6 | 6 |
7 import '../constants/expressions.dart'; | 7 import '../constants/expressions.dart'; |
8 import '../constants/values.dart' as values; | 8 import '../constants/values.dart' as values; |
9 import '../dart_types.dart' show DartType, GenericType; | 9 import '../dart_types.dart' show DartType, GenericType; |
10 import '../elements/elements.dart'; | 10 import '../elements/elements.dart'; |
| 11 import '../io/source_information.dart' show SourceInformation; |
11 import '../universe/universe.dart'; | 12 import '../universe/universe.dart'; |
12 import '../universe/universe.dart' show Selector; | 13 import '../universe/universe.dart' show Selector; |
13 import 'optimization/optimization.dart'; | 14 import 'optimization/optimization.dart'; |
14 | 15 |
15 // The Tree language is the target of translation out of the CPS-based IR. | 16 // The Tree language is the target of translation out of the CPS-based IR. |
16 // | 17 // |
17 // The translation from CPS to Dart consists of several stages. Among the | 18 // The translation from CPS to Dart consists of several stages. Among the |
18 // stages are translation to direct style, translation out of SSA, eliminating | 19 // stages are translation to direct style, translation out of SSA, eliminating |
19 // unnecessary names, recognizing high-level control constructs. Combining | 20 // unnecessary names, recognizing high-level control constructs. Combining |
20 // these separate concerns is complicated and the constraints of the CPS-based | 21 // these separate concerns is complicated and the constraints of the CPS-based |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 | 121 |
121 /** | 122 /** |
122 * A call to a static function or getter/setter to a static field. | 123 * A call to a static function or getter/setter to a static field. |
123 * | 124 * |
124 * In contrast to the CPS-based IR, the arguments can be arbitrary expressions. | 125 * In contrast to the CPS-based IR, the arguments can be arbitrary expressions. |
125 */ | 126 */ |
126 class InvokeStatic extends Expression implements Invoke { | 127 class InvokeStatic extends Expression implements Invoke { |
127 final Entity target; | 128 final Entity target; |
128 final List<Expression> arguments; | 129 final List<Expression> arguments; |
129 final Selector selector; | 130 final Selector selector; |
| 131 final SourceInformation sourceInformation; |
130 | 132 |
131 InvokeStatic(this.target, this.selector, this.arguments); | 133 InvokeStatic(this.target, this.selector, this.arguments, |
| 134 {this.sourceInformation}); |
132 | 135 |
133 accept(ExpressionVisitor visitor) => visitor.visitInvokeStatic(this); | 136 accept(ExpressionVisitor visitor) => visitor.visitInvokeStatic(this); |
134 accept1(ExpressionVisitor1 visitor, arg) { | 137 accept1(ExpressionVisitor1 visitor, arg) { |
135 return visitor.visitInvokeStatic(this, arg); | 138 return visitor.visitInvokeStatic(this, arg); |
136 } | 139 } |
137 } | 140 } |
138 | 141 |
139 /** | 142 /** |
140 * A call to a method, operator, getter, setter or index getter/setter. | 143 * A call to a method, operator, getter, setter or index getter/setter. |
141 * | 144 * |
(...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
922 visitStatement(node.next); | 925 visitStatement(node.next); |
923 } | 926 } |
924 | 927 |
925 visitCreateBox(CreateBox node) { | 928 visitCreateBox(CreateBox node) { |
926 } | 929 } |
927 | 930 |
928 visitCreateInstance(CreateInstance node) { | 931 visitCreateInstance(CreateInstance node) { |
929 node.arguments.forEach(visitExpression); | 932 node.arguments.forEach(visitExpression); |
930 } | 933 } |
931 } | 934 } |
OLD | NEW |