| 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/values.dart' as values; | 7 import '../constants/values.dart' as values; |
| 8 import '../dart_types.dart' show DartType, InterfaceType, TypeVariableType; | 8 import '../dart_types.dart' show DartType, InterfaceType, TypeVariableType; |
| 9 import '../elements/elements.dart'; | 9 import '../elements/elements.dart'; |
| 10 import '../io/source_information.dart' show SourceInformation; | 10 import '../io/source_information.dart' show SourceInformation; |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 ApplyBuiltinOperator(this.operator, this.arguments); | 355 ApplyBuiltinOperator(this.operator, this.arguments); |
| 356 | 356 |
| 357 accept(ExpressionVisitor visitor) { | 357 accept(ExpressionVisitor visitor) { |
| 358 return visitor.visitApplyBuiltinOperator(this); | 358 return visitor.visitApplyBuiltinOperator(this); |
| 359 } | 359 } |
| 360 accept1(ExpressionVisitor1 visitor, arg) { | 360 accept1(ExpressionVisitor1 visitor, arg) { |
| 361 return visitor.visitApplyBuiltinOperator(this, arg); | 361 return visitor.visitApplyBuiltinOperator(this, arg); |
| 362 } | 362 } |
| 363 } | 363 } |
| 364 | 364 |
| 365 class ApplyBuiltinMethod extends Expression { |
| 366 BuiltinMethod method; |
| 367 Expression receiver; |
| 368 List<Expression> arguments; |
| 369 |
| 370 bool receiverIsNotNull = false; |
| 371 |
| 372 ApplyBuiltinMethod(this.method, this.receiver, this.arguments); |
| 373 |
| 374 accept(ExpressionVisitor visitor) { |
| 375 return visitor.visitApplyBuiltinMethod(this); |
| 376 } |
| 377 accept1(ExpressionVisitor1 visitor, arg) { |
| 378 return visitor.visitApplyBuiltinMethod(this, arg); |
| 379 } |
| 380 } |
| 381 |
| 365 /// A conditional expression. | 382 /// A conditional expression. |
| 366 class Conditional extends Expression { | 383 class Conditional extends Expression { |
| 367 Expression condition; | 384 Expression condition; |
| 368 Expression thenExpression; | 385 Expression thenExpression; |
| 369 Expression elseExpression; | 386 Expression elseExpression; |
| 370 | 387 |
| 371 Conditional(this.condition, this.thenExpression, this.elseExpression); | 388 Conditional(this.condition, this.thenExpression, this.elseExpression); |
| 372 | 389 |
| 373 accept(ExpressionVisitor visitor) => visitor.visitConditional(this); | 390 accept(ExpressionVisitor visitor) => visitor.visitConditional(this); |
| 374 accept1(ExpressionVisitor1 visitor, arg) { | 391 accept1(ExpressionVisitor1 visitor, arg) { |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 931 E visitGetStatic(GetStatic node); | 948 E visitGetStatic(GetStatic node); |
| 932 E visitSetStatic(SetStatic node); | 949 E visitSetStatic(SetStatic node); |
| 933 E visitCreateBox(CreateBox node); | 950 E visitCreateBox(CreateBox node); |
| 934 E visitCreateInstance(CreateInstance node); | 951 E visitCreateInstance(CreateInstance node); |
| 935 E visitReifyRuntimeType(ReifyRuntimeType node); | 952 E visitReifyRuntimeType(ReifyRuntimeType node); |
| 936 E visitReadTypeVariable(ReadTypeVariable node); | 953 E visitReadTypeVariable(ReadTypeVariable node); |
| 937 E visitTypeExpression(TypeExpression node); | 954 E visitTypeExpression(TypeExpression node); |
| 938 E visitCreateInvocationMirror(CreateInvocationMirror node); | 955 E visitCreateInvocationMirror(CreateInvocationMirror node); |
| 939 E visitInterceptor(Interceptor node); | 956 E visitInterceptor(Interceptor node); |
| 940 E visitApplyBuiltinOperator(ApplyBuiltinOperator node); | 957 E visitApplyBuiltinOperator(ApplyBuiltinOperator node); |
| 958 E visitApplyBuiltinMethod(ApplyBuiltinMethod node); |
| 941 E visitForeignExpression(ForeignExpression node); | 959 E visitForeignExpression(ForeignExpression node); |
| 942 E visitGetLength(GetLength node); | 960 E visitGetLength(GetLength node); |
| 943 E visitGetIndex(GetIndex node); | 961 E visitGetIndex(GetIndex node); |
| 944 E visitSetIndex(SetIndex node); | 962 E visitSetIndex(SetIndex node); |
| 945 E visitAwait(Await node); | 963 E visitAwait(Await node); |
| 946 } | 964 } |
| 947 | 965 |
| 948 abstract class ExpressionVisitor1<E, A> { | 966 abstract class ExpressionVisitor1<E, A> { |
| 949 E visitExpression(Expression node, A arg) => node.accept1(this, arg); | 967 E visitExpression(Expression node, A arg) => node.accept1(this, arg); |
| 950 E visitVariableUse(VariableUse node, A arg); | 968 E visitVariableUse(VariableUse node, A arg); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 967 E visitGetStatic(GetStatic node, A arg); | 985 E visitGetStatic(GetStatic node, A arg); |
| 968 E visitSetStatic(SetStatic node, A arg); | 986 E visitSetStatic(SetStatic node, A arg); |
| 969 E visitCreateBox(CreateBox node, A arg); | 987 E visitCreateBox(CreateBox node, A arg); |
| 970 E visitCreateInstance(CreateInstance node, A arg); | 988 E visitCreateInstance(CreateInstance node, A arg); |
| 971 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); | 989 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); |
| 972 E visitReadTypeVariable(ReadTypeVariable node, A arg); | 990 E visitReadTypeVariable(ReadTypeVariable node, A arg); |
| 973 E visitTypeExpression(TypeExpression node, A arg); | 991 E visitTypeExpression(TypeExpression node, A arg); |
| 974 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg); | 992 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg); |
| 975 E visitInterceptor(Interceptor node, A arg); | 993 E visitInterceptor(Interceptor node, A arg); |
| 976 E visitApplyBuiltinOperator(ApplyBuiltinOperator node, A arg); | 994 E visitApplyBuiltinOperator(ApplyBuiltinOperator node, A arg); |
| 995 E visitApplyBuiltinMethod(ApplyBuiltinMethod node, A arg); |
| 977 E visitForeignExpression(ForeignExpression node, A arg); | 996 E visitForeignExpression(ForeignExpression node, A arg); |
| 978 E visitGetLength(GetLength node, A arg); | 997 E visitGetLength(GetLength node, A arg); |
| 979 E visitGetIndex(GetIndex node, A arg); | 998 E visitGetIndex(GetIndex node, A arg); |
| 980 E visitSetIndex(SetIndex node, A arg); | 999 E visitSetIndex(SetIndex node, A arg); |
| 981 E visitAwait(Await node, A arg); | 1000 E visitAwait(Await node, A arg); |
| 982 } | 1001 } |
| 983 | 1002 |
| 984 abstract class StatementVisitor<S> { | 1003 abstract class StatementVisitor<S> { |
| 985 S visitStatement(Statement node) => node.accept(this); | 1004 S visitStatement(Statement node) => node.accept(this); |
| 986 S visitLabeledStatement(LabeledStatement node); | 1005 S visitLabeledStatement(LabeledStatement node); |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1180 node.arguments.forEach(visitExpression); | 1199 node.arguments.forEach(visitExpression); |
| 1181 } | 1200 } |
| 1182 | 1201 |
| 1183 visitUnreachable(Unreachable node) { | 1202 visitUnreachable(Unreachable node) { |
| 1184 } | 1203 } |
| 1185 | 1204 |
| 1186 visitApplyBuiltinOperator(ApplyBuiltinOperator node) { | 1205 visitApplyBuiltinOperator(ApplyBuiltinOperator node) { |
| 1187 node.arguments.forEach(visitExpression); | 1206 node.arguments.forEach(visitExpression); |
| 1188 } | 1207 } |
| 1189 | 1208 |
| 1209 visitApplyBuiltinMethod(ApplyBuiltinMethod node) { |
| 1210 visitExpression(node.receiver); |
| 1211 node.arguments.forEach(visitExpression); |
| 1212 } |
| 1213 |
| 1190 visitInterceptor(Interceptor node) { | 1214 visitInterceptor(Interceptor node) { |
| 1191 visitExpression(node.input); | 1215 visitExpression(node.input); |
| 1192 } | 1216 } |
| 1193 | 1217 |
| 1194 visitForeignCode(ForeignCode node) { | 1218 visitForeignCode(ForeignCode node) { |
| 1195 node.arguments.forEach(visitExpression); | 1219 node.arguments.forEach(visitExpression); |
| 1196 } | 1220 } |
| 1197 | 1221 |
| 1198 visitForeignExpression(ForeignExpression node) => visitForeignCode(node); | 1222 visitForeignExpression(ForeignExpression node) => visitForeignCode(node); |
| 1199 visitForeignStatement(ForeignStatement node) => visitForeignCode(node); | 1223 visitForeignStatement(ForeignStatement node) => visitForeignCode(node); |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1429 | 1453 |
| 1430 visitUnreachable(Unreachable node) { | 1454 visitUnreachable(Unreachable node) { |
| 1431 return node; | 1455 return node; |
| 1432 } | 1456 } |
| 1433 | 1457 |
| 1434 visitApplyBuiltinOperator(ApplyBuiltinOperator node) { | 1458 visitApplyBuiltinOperator(ApplyBuiltinOperator node) { |
| 1435 _replaceExpressions(node.arguments); | 1459 _replaceExpressions(node.arguments); |
| 1436 return node; | 1460 return node; |
| 1437 } | 1461 } |
| 1438 | 1462 |
| 1463 visitApplyBuiltinMethod(ApplyBuiltinMethod node) { |
| 1464 node.receiver = visitExpression(node.receiver); |
| 1465 _replaceExpressions(node.arguments); |
| 1466 return node; |
| 1467 } |
| 1468 |
| 1439 visitInterceptor(Interceptor node) { | 1469 visitInterceptor(Interceptor node) { |
| 1440 node.input = visitExpression(node.input); | 1470 node.input = visitExpression(node.input); |
| 1441 return node; | 1471 return node; |
| 1442 } | 1472 } |
| 1443 | 1473 |
| 1444 visitGetLength(GetLength node) { | 1474 visitGetLength(GetLength node) { |
| 1445 node.object = visitExpression(node.object); | 1475 node.object = visitExpression(node.object); |
| 1446 return node; | 1476 return node; |
| 1447 } | 1477 } |
| 1448 | 1478 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1493 | 1523 |
| 1494 /// Number of uses of the current fallthrough target. | 1524 /// Number of uses of the current fallthrough target. |
| 1495 int get useCount => _stack.last.useCount; | 1525 int get useCount => _stack.last.useCount; |
| 1496 | 1526 |
| 1497 /// Indicate that a statement will fall through to the current fallthrough | 1527 /// Indicate that a statement will fall through to the current fallthrough |
| 1498 /// target. | 1528 /// target. |
| 1499 void use() { | 1529 void use() { |
| 1500 ++_stack.last.useCount; | 1530 ++_stack.last.useCount; |
| 1501 } | 1531 } |
| 1502 } | 1532 } |
| OLD | NEW |