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

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

Issue 1134063002: dart2js cps: Introduce GetStatic/SetStatic. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 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 | Annotate | Revision Log
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/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, InterfaceType, TypeVaria bleType; 9 import '../dart_types.dart' show DartType, GenericType, InterfaceType, TypeVaria bleType;
10 import '../elements/elements.dart'; 10 import '../elements/elements.dart';
(...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 Expression object; 866 Expression object;
867 Element field; 867 Element field;
868 Expression value; 868 Expression value;
869 869
870 SetField(this.object, this.field, this.value); 870 SetField(this.object, this.field, this.value);
871 871
872 accept(ExpressionVisitor visitor) => visitor.visitSetField(this); 872 accept(ExpressionVisitor visitor) => visitor.visitSetField(this);
873 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetField(this, arg); 873 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetField(this, arg);
874 } 874 }
875 875
876 class GetStatic extends Expression {
877 Element element;
878 SourceInformation sourceInformation;
879
880 GetStatic(this.element, this.sourceInformation);
881
882 accept(ExpressionVisitor visitor) => visitor.visitGetStatic(this);
883 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitGetStatic(this, arg);
884 }
885
886
887 class SetStatic extends Expression {
888 Element element;
889 Expression value;
890 SourceInformation sourceInformation;
891
892 SetStatic(this.element, this.value, this.sourceInformation);
893
894 accept(ExpressionVisitor visitor) => visitor.visitSetStatic(this);
895 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetStatic(this, arg);
896 }
897
876 class ReifyRuntimeType extends Expression implements JsSpecificNode { 898 class ReifyRuntimeType extends Expression implements JsSpecificNode {
877 Expression value; 899 Expression value;
878 900
879 ReifyRuntimeType(this.value); 901 ReifyRuntimeType(this.value);
880 902
881 accept(ExpressionVisitor visitor) { 903 accept(ExpressionVisitor visitor) {
882 return visitor.visitReifyRuntimeType(this); 904 return visitor.visitReifyRuntimeType(this);
883 } 905 }
884 906
885 accept1(ExpressionVisitor1 visitor, arg) { 907 accept1(ExpressionVisitor1 visitor, arg) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 E visitThis(This node); 970 E visitThis(This node);
949 E visitReifyTypeVar(ReifyTypeVar node); 971 E visitReifyTypeVar(ReifyTypeVar node);
950 E visitConditional(Conditional node); 972 E visitConditional(Conditional node);
951 E visitLogicalOperator(LogicalOperator node); 973 E visitLogicalOperator(LogicalOperator node);
952 E visitNot(Not node); 974 E visitNot(Not node);
953 E visitLiteralList(LiteralList node); 975 E visitLiteralList(LiteralList node);
954 E visitLiteralMap(LiteralMap node); 976 E visitLiteralMap(LiteralMap node);
955 E visitTypeOperator(TypeOperator node); 977 E visitTypeOperator(TypeOperator node);
956 E visitFunctionExpression(FunctionExpression node); 978 E visitFunctionExpression(FunctionExpression node);
957 E visitGetField(GetField node); 979 E visitGetField(GetField node);
980 E visitSetField(SetField node);
981 E visitGetStatic(GetStatic node);
982 E visitSetStatic(SetStatic node);
958 E visitCreateBox(CreateBox node); 983 E visitCreateBox(CreateBox node);
959 E visitCreateInstance(CreateInstance node); 984 E visitCreateInstance(CreateInstance node);
960 E visitReifyRuntimeType(ReifyRuntimeType node); 985 E visitReifyRuntimeType(ReifyRuntimeType node);
961 E visitReadTypeVariable(ReadTypeVariable node); 986 E visitReadTypeVariable(ReadTypeVariable node);
962 E visitTypeExpression(TypeExpression node); 987 E visitTypeExpression(TypeExpression node);
963 E visitSetField(SetField node);
964 E visitCreateInvocationMirror(CreateInvocationMirror node); 988 E visitCreateInvocationMirror(CreateInvocationMirror node);
965 } 989 }
966 990
967 abstract class ExpressionVisitor1<E, A> { 991 abstract class ExpressionVisitor1<E, A> {
968 E visitExpression(Expression node, A arg) => node.accept1(this, arg); 992 E visitExpression(Expression node, A arg) => node.accept1(this, arg);
969 E visitVariableUse(VariableUse node, A arg); 993 E visitVariableUse(VariableUse node, A arg);
970 E visitAssign(Assign node, A arg); 994 E visitAssign(Assign node, A arg);
971 E visitInvokeStatic(InvokeStatic node, A arg); 995 E visitInvokeStatic(InvokeStatic node, A arg);
972 E visitInvokeMethod(InvokeMethod node, A arg); 996 E visitInvokeMethod(InvokeMethod node, A arg);
973 E visitInvokeMethodDirectly(InvokeMethodDirectly node, A arg); 997 E visitInvokeMethodDirectly(InvokeMethodDirectly node, A arg);
974 E visitInvokeConstructor(InvokeConstructor node, A arg); 998 E visitInvokeConstructor(InvokeConstructor node, A arg);
975 E visitConcatenateStrings(ConcatenateStrings node, A arg); 999 E visitConcatenateStrings(ConcatenateStrings node, A arg);
976 E visitConstant(Constant node, A arg); 1000 E visitConstant(Constant node, A arg);
977 E visitThis(This node, A arg); 1001 E visitThis(This node, A arg);
978 E visitReifyTypeVar(ReifyTypeVar node, A arg); 1002 E visitReifyTypeVar(ReifyTypeVar node, A arg);
979 E visitConditional(Conditional node, A arg); 1003 E visitConditional(Conditional node, A arg);
980 E visitLogicalOperator(LogicalOperator node, A arg); 1004 E visitLogicalOperator(LogicalOperator node, A arg);
981 E visitNot(Not node, A arg); 1005 E visitNot(Not node, A arg);
982 E visitLiteralList(LiteralList node, A arg); 1006 E visitLiteralList(LiteralList node, A arg);
983 E visitLiteralMap(LiteralMap node, A arg); 1007 E visitLiteralMap(LiteralMap node, A arg);
984 E visitTypeOperator(TypeOperator node, A arg); 1008 E visitTypeOperator(TypeOperator node, A arg);
985 E visitFunctionExpression(FunctionExpression node, A arg); 1009 E visitFunctionExpression(FunctionExpression node, A arg);
986 E visitGetField(GetField node, A arg); 1010 E visitGetField(GetField node, A arg);
1011 E visitSetField(SetField node, A arg);
1012 E visitGetStatic(GetStatic node, A arg);
1013 E visitSetStatic(SetStatic node, A arg);
987 E visitCreateBox(CreateBox node, A arg); 1014 E visitCreateBox(CreateBox node, A arg);
988 E visitCreateInstance(CreateInstance node, A arg); 1015 E visitCreateInstance(CreateInstance node, A arg);
989 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); 1016 E visitReifyRuntimeType(ReifyRuntimeType node, A arg);
990 E visitReadTypeVariable(ReadTypeVariable node, A arg); 1017 E visitReadTypeVariable(ReadTypeVariable node, A arg);
991 E visitTypeExpression(TypeExpression node, A arg); 1018 E visitTypeExpression(TypeExpression node, A arg);
992 E visitSetField(SetField node, A arg);
993 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg); 1019 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg);
994 } 1020 }
995 1021
996 abstract class StatementVisitor<S> { 1022 abstract class StatementVisitor<S> {
997 S visitStatement(Statement node) => node.accept(this); 1023 S visitStatement(Statement node) => node.accept(this);
998 S visitLabeledStatement(LabeledStatement node); 1024 S visitLabeledStatement(LabeledStatement node);
999 S visitReturn(Return node); 1025 S visitReturn(Return node);
1000 S visitThrow(Throw node); 1026 S visitThrow(Throw node);
1001 S visitRethrow(Rethrow node); 1027 S visitRethrow(Rethrow node);
1002 S visitBreak(Break node); 1028 S visitBreak(Break node);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 1216
1191 visitGetField(GetField node) { 1217 visitGetField(GetField node) {
1192 visitExpression(node.object); 1218 visitExpression(node.object);
1193 } 1219 }
1194 1220
1195 visitSetField(SetField node) { 1221 visitSetField(SetField node) {
1196 visitExpression(node.object); 1222 visitExpression(node.object);
1197 visitExpression(node.value); 1223 visitExpression(node.value);
1198 } 1224 }
1199 1225
1226 visitGetStatic(GetStatic node) {
1227 }
1228
1229 visitSetStatic(SetStatic node) {
1230 visitExpression(node.value);
1231 }
1232
1200 visitCreateBox(CreateBox node) { 1233 visitCreateBox(CreateBox node) {
1201 } 1234 }
1202 1235
1203 visitCreateInstance(CreateInstance node) { 1236 visitCreateInstance(CreateInstance node) {
1204 node.arguments.forEach(visitExpression); 1237 node.arguments.forEach(visitExpression);
1205 node.typeInformation.forEach(visitExpression); 1238 node.typeInformation.forEach(visitExpression);
1206 } 1239 }
1207 1240
1208 visitReifyRuntimeType(ReifyRuntimeType node) { 1241 visitReifyRuntimeType(ReifyRuntimeType node) {
1209 visitExpression(node.value); 1242 visitExpression(node.value);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1388 node.object = visitExpression(node.object); 1421 node.object = visitExpression(node.object);
1389 return node; 1422 return node;
1390 } 1423 }
1391 1424
1392 visitSetField(SetField node) { 1425 visitSetField(SetField node) {
1393 node.object = visitExpression(node.object); 1426 node.object = visitExpression(node.object);
1394 node.value = visitExpression(node.value); 1427 node.value = visitExpression(node.value);
1395 return node; 1428 return node;
1396 } 1429 }
1397 1430
1431 visitGetStatic(GetStatic node) => node;
1432
1433 visitSetStatic(SetStatic node) {
1434 node.value = visitExpression(node.value);
1435 return node;
1436 }
1437
1398 visitCreateBox(CreateBox node) => node; 1438 visitCreateBox(CreateBox node) => node;
1399 1439
1400 visitCreateInstance(CreateInstance node) { 1440 visitCreateInstance(CreateInstance node) {
1401 _replaceExpressions(node.arguments); 1441 _replaceExpressions(node.arguments);
1402 return node; 1442 return node;
1403 } 1443 }
1404 1444
1405 visitReifyRuntimeType(ReifyRuntimeType node) { 1445 visitReifyRuntimeType(ReifyRuntimeType node) {
1406 node.value = visitExpression(node.value); 1446 node.value = visitExpression(node.value);
1407 return node; 1447 return node;
1408 } 1448 }
1409 1449
1410 visitReadTypeVariable(ReadTypeVariable node) { 1450 visitReadTypeVariable(ReadTypeVariable node) {
1411 node.target = visitExpression(node.target); 1451 node.target = visitExpression(node.target);
1412 return node; 1452 return node;
1413 } 1453 }
1414 1454
1415 visitTypeExpression(TypeExpression node) { 1455 visitTypeExpression(TypeExpression node) {
1416 _replaceExpressions(node.arguments); 1456 _replaceExpressions(node.arguments);
1417 return node; 1457 return node;
1418 } 1458 }
1419 1459
1420 visitCreateInvocationMirror(CreateInvocationMirror node) { 1460 visitCreateInvocationMirror(CreateInvocationMirror node) {
1421 _replaceExpressions(node.arguments); 1461 _replaceExpressions(node.arguments);
1422 return node; 1462 return node;
1423 } 1463 }
1424 } 1464 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698