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

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

Issue 1285173002: dart2js cps: Rewrite more List operations into JS array operations. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Remove unused code and fix long line Created 5 years, 4 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
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 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
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
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698