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

Side by Side Diff: pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart

Issue 1204733002: dart2js cps: Make Identical a built-in and add Interceptor to Tree IR. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 library dart2js.ir_nodes; 4 library dart2js.ir_nodes;
5 5
6 import '../constants/expressions.dart'; 6 import '../constants/expressions.dart';
7 import '../constants/values.dart' as values show ConstantValue; 7 import '../constants/values.dart' as values show ConstantValue;
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 686 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 final List<Reference<Primitive>> typeInformation; 697 final List<Reference<Primitive>> typeInformation;
698 698
699 CreateInstance(this.classElement, List<Primitive> arguments, 699 CreateInstance(this.classElement, List<Primitive> arguments,
700 List<Primitive> typeInformation) 700 List<Primitive> typeInformation)
701 : this.arguments = _referenceList(arguments), 701 : this.arguments = _referenceList(arguments),
702 this.typeInformation = _referenceList(typeInformation); 702 this.typeInformation = _referenceList(typeInformation);
703 703
704 accept(Visitor visitor) => visitor.visitCreateInstance(this); 704 accept(Visitor visitor) => visitor.visitCreateInstance(this);
705 } 705 }
706 706
707 /// Compare objects for identity.
708 ///
709 /// It is an error pass in a value that does not correspond to a Dart value,
710 /// such as an interceptor or a box.
711 class Identical extends Primitive {
712 final Reference<Primitive> left;
713 final Reference<Primitive> right;
714 Identical(Primitive left, Primitive right)
715 : left = new Reference<Primitive>(left),
716 right = new Reference<Primitive>(right);
717 accept(Visitor visitor) => visitor.visitIdentical(this);
718 }
719
720 class Interceptor extends Primitive { 707 class Interceptor extends Primitive {
721 final Reference<Primitive> input; 708 final Reference<Primitive> input;
722 final Set<ClassElement> interceptedClasses; 709 final Set<ClassElement> interceptedClasses;
723 Interceptor(Primitive input, this.interceptedClasses) 710 Interceptor(Primitive input, this.interceptedClasses)
724 : this.input = new Reference<Primitive>(input); 711 : this.input = new Reference<Primitive>(input);
725 accept(Visitor visitor) => visitor.visitInterceptor(this); 712 accept(Visitor visitor) => visitor.visitInterceptor(this);
726 } 713 }
727 714
728 /// Create an instance of [Invocation] for use in a call to `noSuchMethod`. 715 /// Create an instance of [Invocation] for use in a call to `noSuchMethod`.
729 class CreateInvocationMirror extends Primitive { 716 class CreateInvocationMirror extends Primitive {
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 T visitLiteralList(LiteralList node); 954 T visitLiteralList(LiteralList node);
968 T visitLiteralMap(LiteralMap node); 955 T visitLiteralMap(LiteralMap node);
969 T visitConstant(Constant node); 956 T visitConstant(Constant node);
970 T visitCreateFunction(CreateFunction node); 957 T visitCreateFunction(CreateFunction node);
971 T visitGetMutableVariable(GetMutableVariable node); 958 T visitGetMutableVariable(GetMutableVariable node);
972 T visitParameter(Parameter node); 959 T visitParameter(Parameter node);
973 T visitContinuation(Continuation node); 960 T visitContinuation(Continuation node);
974 T visitMutableVariable(MutableVariable node); 961 T visitMutableVariable(MutableVariable node);
975 T visitNonTailThrow(NonTailThrow node); 962 T visitNonTailThrow(NonTailThrow node);
976 T visitGetStatic(GetStatic node); 963 T visitGetStatic(GetStatic node);
977 T visitIdentical(Identical node);
978 T visitInterceptor(Interceptor node); 964 T visitInterceptor(Interceptor node);
979 T visitCreateInstance(CreateInstance node); 965 T visitCreateInstance(CreateInstance node);
980 T visitGetField(GetField node); 966 T visitGetField(GetField node);
981 T visitCreateBox(CreateBox node); 967 T visitCreateBox(CreateBox node);
982 T visitReifyRuntimeType(ReifyRuntimeType node); 968 T visitReifyRuntimeType(ReifyRuntimeType node);
983 T visitReadTypeVariable(ReadTypeVariable node); 969 T visitReadTypeVariable(ReadTypeVariable node);
984 T visitTypeExpression(TypeExpression node); 970 T visitTypeExpression(TypeExpression node);
985 T visitCreateInvocationMirror(CreateInvocationMirror node); 971 T visitCreateInvocationMirror(CreateInvocationMirror node);
986 T visitTypeTest(TypeTest node); 972 T visitTypeTest(TypeTest node);
987 T visitApplyBuiltinOperator(ApplyBuiltinOperator node); 973 T visitApplyBuiltinOperator(ApplyBuiltinOperator node);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1175 node.parameters.forEach(visitParameter); 1161 node.parameters.forEach(visitParameter);
1176 if (node.body != null) visit(node.body); 1162 if (node.body != null) visit(node.body);
1177 } 1163 }
1178 1164
1179 processIsTrue(IsTrue node) {} 1165 processIsTrue(IsTrue node) {}
1180 visitIsTrue(IsTrue node) { 1166 visitIsTrue(IsTrue node) {
1181 processIsTrue(node); 1167 processIsTrue(node);
1182 processReference(node.value); 1168 processReference(node.value);
1183 } 1169 }
1184 1170
1185 processIdentical(Identical node) {}
1186 visitIdentical(Identical node) {
1187 processIdentical(node);
1188 processReference(node.left);
1189 processReference(node.right);
1190 }
1191
1192 processInterceptor(Interceptor node) {} 1171 processInterceptor(Interceptor node) {}
1193 visitInterceptor(Interceptor node) { 1172 visitInterceptor(Interceptor node) {
1194 processInterceptor(node); 1173 processInterceptor(node);
1195 processReference(node.input); 1174 processReference(node.input);
1196 } 1175 }
1197 1176
1198 processCreateInstance(CreateInstance node) {} 1177 processCreateInstance(CreateInstance node) {}
1199 visitCreateInstance(CreateInstance node) { 1178 visitCreateInstance(CreateInstance node) {
1200 processCreateInstance(node); 1179 processCreateInstance(node);
1201 node.arguments.forEach(processReference); 1180 node.arguments.forEach(processReference);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1289 const RemovalVisitor(); 1268 const RemovalVisitor();
1290 1269
1291 processReference(Reference reference) { 1270 processReference(Reference reference) {
1292 reference.unlink(); 1271 reference.unlink();
1293 } 1272 }
1294 1273
1295 static void remove(Node node) { 1274 static void remove(Node node) {
1296 (const RemovalVisitor()).visit(node); 1275 (const RemovalVisitor()).visit(node);
1297 } 1276 }
1298 } 1277 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698