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

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

Issue 1396663002: Revert "Use interceptors for is-checks (version 2)." (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 accept1(ExpressionVisitor1 visitor, arg) { 397 accept1(ExpressionVisitor1 visitor, arg) {
398 return visitor.visitConditional(this, arg); 398 return visitor.visitConditional(this, arg);
399 } 399 }
400 400
401 String toString() => 'Conditional(condition=$condition,thenExpression=' 401 String toString() => 'Conditional(condition=$condition,thenExpression='
402 '$thenExpression,elseExpression=$elseExpression)'; 402 '$thenExpression,elseExpression=$elseExpression)';
403 } 403 }
404 404
405 /// An && or || expression. The operator is internally represented as a boolean 405 /// An && or || expression. The operator is internally represented as a boolean
406 /// [isAnd] to simplify rewriting of logical operators. 406 /// [isAnd] to simplify rewriting of logical operators.
407 /// Note the the result of && and || is one of the arguments, which might not be
408 /// boolean. 'ShortCircuitOperator' might have been a better name.
409 class LogicalOperator extends Expression { 407 class LogicalOperator extends Expression {
410 Expression left; 408 Expression left;
411 bool isAnd; 409 bool isAnd;
412 Expression right; 410 Expression right;
413 411
414 LogicalOperator(this.left, this.right, this.isAnd); 412 LogicalOperator(this.left, this.right, this.isAnd);
415 LogicalOperator.and(this.left, this.right) : isAnd = true; 413 LogicalOperator.and(this.left, this.right) : isAnd = true;
416 LogicalOperator.or(this.left, this.right) : isAnd = false; 414 LogicalOperator.or(this.left, this.right) : isAnd = false;
417 415
418 String get operator => isAnd ? '&&' : '||'; 416 String get operator => isAnd ? '&&' : '||';
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 Expression object; 735 Expression object;
738 Element field; 736 Element field;
739 Expression value; 737 Expression value;
740 738
741 SetField(this.object, this.field, this.value); 739 SetField(this.object, this.field, this.value);
742 740
743 accept(ExpressionVisitor visitor) => visitor.visitSetField(this); 741 accept(ExpressionVisitor visitor) => visitor.visitSetField(this);
744 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetField(this, arg); 742 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitSetField(this, arg);
745 } 743 }
746 744
747
748 /// Read the type test property from [object]. The value is truthy/fasly rather
749 /// than bool. [object] must not be `null`.
750 class GetTypeTestProperty extends Expression {
751 Expression object;
752 DartType dartType;
753
754 GetTypeTestProperty(this.object, this.dartType);
755
756 accept(ExpressionVisitor visitor) =>
757 visitor.visitGetTypeTestProperty(this);
758 accept1(ExpressionVisitor1 visitor, arg) =>
759 visitor.visitGetTypeTestProperty(this, arg);
760 }
761
762
763 /// Read the value of a field, possibly provoking its initializer to evaluate, 745 /// Read the value of a field, possibly provoking its initializer to evaluate,
764 /// or tear off a static method. 746 /// or tear off a static method.
765 class GetStatic extends Expression { 747 class GetStatic extends Expression {
766 Element element; 748 Element element;
767 SourceInformation sourceInformation; 749 SourceInformation sourceInformation;
768 750
769 GetStatic(this.element, this.sourceInformation); 751 GetStatic(this.element, this.sourceInformation);
770 752
771 accept(ExpressionVisitor visitor) => visitor.visitGetStatic(this); 753 accept(ExpressionVisitor visitor) => visitor.visitGetStatic(this);
772 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitGetStatic(this, arg); 754 accept1(ExpressionVisitor1 visitor, arg) => visitor.visitGetStatic(this, arg);
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 E visitLogicalOperator(LogicalOperator node); 968 E visitLogicalOperator(LogicalOperator node);
987 E visitNot(Not node); 969 E visitNot(Not node);
988 E visitLiteralList(LiteralList node); 970 E visitLiteralList(LiteralList node);
989 E visitLiteralMap(LiteralMap node); 971 E visitLiteralMap(LiteralMap node);
990 E visitTypeOperator(TypeOperator node); 972 E visitTypeOperator(TypeOperator node);
991 E visitFunctionExpression(FunctionExpression node); 973 E visitFunctionExpression(FunctionExpression node);
992 E visitGetField(GetField node); 974 E visitGetField(GetField node);
993 E visitSetField(SetField node); 975 E visitSetField(SetField node);
994 E visitGetStatic(GetStatic node); 976 E visitGetStatic(GetStatic node);
995 E visitSetStatic(SetStatic node); 977 E visitSetStatic(SetStatic node);
996 E visitGetTypeTestProperty(GetTypeTestProperty node);
997 E visitCreateBox(CreateBox node); 978 E visitCreateBox(CreateBox node);
998 E visitCreateInstance(CreateInstance node); 979 E visitCreateInstance(CreateInstance node);
999 E visitReifyRuntimeType(ReifyRuntimeType node); 980 E visitReifyRuntimeType(ReifyRuntimeType node);
1000 E visitReadTypeVariable(ReadTypeVariable node); 981 E visitReadTypeVariable(ReadTypeVariable node);
1001 E visitTypeExpression(TypeExpression node); 982 E visitTypeExpression(TypeExpression node);
1002 E visitCreateInvocationMirror(CreateInvocationMirror node); 983 E visitCreateInvocationMirror(CreateInvocationMirror node);
1003 E visitInterceptor(Interceptor node); 984 E visitInterceptor(Interceptor node);
1004 E visitApplyBuiltinOperator(ApplyBuiltinOperator node); 985 E visitApplyBuiltinOperator(ApplyBuiltinOperator node);
1005 E visitApplyBuiltinMethod(ApplyBuiltinMethod node); 986 E visitApplyBuiltinMethod(ApplyBuiltinMethod node);
1006 E visitForeignExpression(ForeignExpression node); 987 E visitForeignExpression(ForeignExpression node);
(...skipping 17 matching lines...) Expand all
1024 E visitLogicalOperator(LogicalOperator node, A arg); 1005 E visitLogicalOperator(LogicalOperator node, A arg);
1025 E visitNot(Not node, A arg); 1006 E visitNot(Not node, A arg);
1026 E visitLiteralList(LiteralList node, A arg); 1007 E visitLiteralList(LiteralList node, A arg);
1027 E visitLiteralMap(LiteralMap node, A arg); 1008 E visitLiteralMap(LiteralMap node, A arg);
1028 E visitTypeOperator(TypeOperator node, A arg); 1009 E visitTypeOperator(TypeOperator node, A arg);
1029 E visitFunctionExpression(FunctionExpression node, A arg); 1010 E visitFunctionExpression(FunctionExpression node, A arg);
1030 E visitGetField(GetField node, A arg); 1011 E visitGetField(GetField node, A arg);
1031 E visitSetField(SetField node, A arg); 1012 E visitSetField(SetField node, A arg);
1032 E visitGetStatic(GetStatic node, A arg); 1013 E visitGetStatic(GetStatic node, A arg);
1033 E visitSetStatic(SetStatic node, A arg); 1014 E visitSetStatic(SetStatic node, A arg);
1034 E visitGetTypeTestProperty(GetTypeTestProperty node, A arg);
1035 E visitCreateBox(CreateBox node, A arg); 1015 E visitCreateBox(CreateBox node, A arg);
1036 E visitCreateInstance(CreateInstance node, A arg); 1016 E visitCreateInstance(CreateInstance node, A arg);
1037 E visitReifyRuntimeType(ReifyRuntimeType node, A arg); 1017 E visitReifyRuntimeType(ReifyRuntimeType node, A arg);
1038 E visitReadTypeVariable(ReadTypeVariable node, A arg); 1018 E visitReadTypeVariable(ReadTypeVariable node, A arg);
1039 E visitTypeExpression(TypeExpression node, A arg); 1019 E visitTypeExpression(TypeExpression node, A arg);
1040 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg); 1020 E visitCreateInvocationMirror(CreateInvocationMirror node, A arg);
1041 E visitInterceptor(Interceptor node, A arg); 1021 E visitInterceptor(Interceptor node, A arg);
1042 E visitApplyBuiltinOperator(ApplyBuiltinOperator node, A arg); 1022 E visitApplyBuiltinOperator(ApplyBuiltinOperator node, A arg);
1043 E visitApplyBuiltinMethod(ApplyBuiltinMethod node, A arg); 1023 E visitApplyBuiltinMethod(ApplyBuiltinMethod node, A arg);
1044 E visitForeignExpression(ForeignExpression node, A arg); 1024 E visitForeignExpression(ForeignExpression node, A arg);
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1219 visitExpression(node.value); 1199 visitExpression(node.value);
1220 } 1200 }
1221 1201
1222 visitGetStatic(GetStatic node) { 1202 visitGetStatic(GetStatic node) {
1223 } 1203 }
1224 1204
1225 visitSetStatic(SetStatic node) { 1205 visitSetStatic(SetStatic node) {
1226 visitExpression(node.value); 1206 visitExpression(node.value);
1227 } 1207 }
1228 1208
1229 visitGetTypeTestProperty(GetTypeTestProperty node) {
1230 visitExpression(node.object);
1231 }
1232
1233 visitCreateBox(CreateBox node) { 1209 visitCreateBox(CreateBox node) {
1234 } 1210 }
1235 1211
1236 visitCreateInstance(CreateInstance node) { 1212 visitCreateInstance(CreateInstance node) {
1237 node.arguments.forEach(visitExpression); 1213 node.arguments.forEach(visitExpression);
1238 node.typeInformation.forEach(visitExpression); 1214 node.typeInformation.forEach(visitExpression);
1239 } 1215 }
1240 1216
1241 visitReifyRuntimeType(ReifyRuntimeType node) { 1217 visitReifyRuntimeType(ReifyRuntimeType node) {
1242 visitExpression(node.value); 1218 visitExpression(node.value);
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 return node; 1444 return node;
1469 } 1445 }
1470 1446
1471 visitGetStatic(GetStatic node) => node; 1447 visitGetStatic(GetStatic node) => node;
1472 1448
1473 visitSetStatic(SetStatic node) { 1449 visitSetStatic(SetStatic node) {
1474 node.value = visitExpression(node.value); 1450 node.value = visitExpression(node.value);
1475 return node; 1451 return node;
1476 } 1452 }
1477 1453
1478 visitGetTypeTestProperty(GetTypeTestProperty node) {
1479 node.object = visitExpression(node.object);
1480 return node;
1481 }
1482
1483 visitCreateBox(CreateBox node) => node; 1454 visitCreateBox(CreateBox node) => node;
1484 1455
1485 visitCreateInstance(CreateInstance node) { 1456 visitCreateInstance(CreateInstance node) {
1486 _replaceExpressions(node.arguments); 1457 _replaceExpressions(node.arguments);
1487 _replaceExpressions(node.typeInformation); 1458 _replaceExpressions(node.typeInformation);
1488 return node; 1459 return node;
1489 } 1460 }
1490 1461
1491 visitReifyRuntimeType(ReifyRuntimeType node) { 1462 visitReifyRuntimeType(ReifyRuntimeType node) {
1492 node.value = visitExpression(node.value); 1463 node.value = visitExpression(node.value);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1596 1567
1597 /// Number of uses of the current fallthrough target. 1568 /// Number of uses of the current fallthrough target.
1598 int get useCount => _stack.last.useCount; 1569 int get useCount => _stack.last.useCount;
1599 1570
1600 /// Indicate that a statement will fall through to the current fallthrough 1571 /// Indicate that a statement will fall through to the current fallthrough
1601 /// target. 1572 /// target.
1602 void use() { 1573 void use() {
1603 ++_stack.last.useCount; 1574 ++_stack.last.useCount;
1604 } 1575 }
1605 } 1576 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart ('k') | pkg/compiler/lib/src/tree_ir/tree_ir_tracer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698